0

こんにちは、私は django を初めて使用します (Python ではありません)。基本的には、1) 検索フォームで顧客を検索する 2) 2 つのドロップダウン メニューで検索する - 1 つ目は組織、2 つ目は組織です。 1 つは特定の顧客です 3) OTRS mysql データベースに接続され、テーブル customer_user から顧客情報を読み取ります - この部分をカバーしました 現在、Web ページを作成し、検索フォームと検索結果を結果でカバーしています。私が抱えている問題は、結果がテーブルの first_name と last_name の部分だけになると想像したことです。その後、リンクをクリックすると、詳細情報が開きます。今、これは私が立ち往生している部分です。リンクを指定する方法がわかりません。同じ Web ページにさらに多くのものを追加するだけです。リンクだけで正しい構文が欠落していると思います+ビューファイルの別の関数。とにかく、ここに私のファイルがあります:

models.py

class CustomerUser(models.Model):
id = models.IntegerField(primary_key=True)
login = models.CharField(unique=True, max_length=200)
email = models.CharField(max_length=150)
customer_id = models.CharField(max_length=150)
pw = models.CharField(max_length=64, blank=True)
title = models.CharField(max_length=50, blank=True)
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
phone = models.CharField(max_length=150, blank=True)
fax = models.CharField(max_length=150, blank=True)
mobile = models.CharField(max_length=150, blank=True)
street = models.CharField(max_length=150, blank=True)
zip = models.CharField(max_length=200, blank=True)
city = models.CharField(max_length=200, blank=True)
country = models.CharField(max_length=200, blank=True)
comments = models.CharField(max_length=250, blank=True)
valid_id = models.IntegerField()
create_time = models.DateTimeField()
create_by = models.IntegerField()
change_time = models.DateTimeField()
change_by = models.IntegerField()
class Meta:
    managed = False
    db_table = 'customer_user'

ビュー.py

from django.shortcuts import render
from models import CustomerUser
from django.http import HttpResponse

def search_form(request):
    #global request
    return render(request, 'korisnici.html')

def search(request):
    global q

    if 'q' in request.GET and request.GET['q']:
        q = request.GET['q']
        korisnik = CustomerUser.objects.filter(first_name__icontains=q)
        korisnik1 = CustomerUser.objects.filter(last_name__icontains=q)
        if korisnik:
            return render(request, 'rezultati.html', {'korisnik': korisnik, 'query': q})
        elif korisnik1:
            return render(request, 'rezultati.html', {'korisnik1': korisnik1, 'query': q})
    else:
        return render(request, 'korisnici.html', {'error': True})

def rezultat(request):
    global q
    if q:
        #q = request.GET['q']
        korisnik = CustomerUser.objects.filter(first_name__icontains=q)
        korisnik1 = CustomerUser.objects.filter(last_name__icontains=q)
        if korisnik:
            return render(request, 'rezultat.html', {'korisnik': korisnik, 'query': q})
        elif korisnik1:
            return render(request, 'rezultat.html', {'korisnik1': korisnik1, 'query': q})
    else:
        return render(request, 'korisnici.html', {'error': True})

およびテンプレート ファイル:

<html>
<head>
    <title>MAI KORISNICI</title>
</head>
<body>
    <form action="/search/" method="get">
        <input type="text" name="q">
        <input type="submit" value="Pretraži">
    </form>
    <p>Ključna riječ: <strong>{{ query }}</strong></p>

{% if korisnik %}
    <p>Pronađeno je {{ korisnik|length }} trgovina.</p>
    <ul>
        {% for book in korisnik %}
        <li><a href={{ rezultat}}>{{ book.first_name }} {{ book.last_name }}</a></li>
        {% endfor %}
    </ul>
{% elif korisnik1 %}
    <p>Pronađeno je {{ korisnik1|length }} trgovina.</p>
    <ul>
        {% for book in korisnik1 %}
        <li><a href="placeholder">{{ book.first_name }} {{ book.last_name }}</a></li>
        {% endfor %}
    </ul>
{% else %}
    <p>Nijedan korisnik ne zadovoljava Vaš upit.</p>
{% endif %}
</body>
</html>

私の問題は、私が思うこの部分です:

{% for book in korisnik1 %}
        <li><a href="placeholder">{{ book.first_name }} {{ book.last_name }}</a></li>
        {% endfor %}

クリックした特定の結果から変数を取得し、同じデータベースからその顧客に関する詳細情報を取得/表示する方法がわかりません (したがって、first_name と last_name だけでなく、メール、pw、コメントなども...) .

私は現在、www.djangobook.com の第 7 章を​​読んでいて、ちょっとイライラしています... この特定の部分がどのように行われているかがわかりません。

4

1 に答える 1

0

これは Django の問題ではありません。CustomerUser インスタンスをテンプレートに渡しているため、情報はすべてそこにあります。そのリンクに対してクリック イベントが発生したときにすべての結果を表示するには、小さな JavaScript が必要です。それらをdivに保存し、デフォルトで非表示にし、クリックすると表示するだけです.

于 2013-11-08T19:46:58.560 に答える