2017-03-15 21 views
1

元のフィールドデータをその結果と共に結果ページに投稿する方法を理解しようとしています。 Djangoで書かれた2つのHTMLページを持つアプリがあります。入力ページと結果ページ。入力ページにはフォームがあります。結果ページには出力があります。リファレンスオリジナルの投稿データDjango

models.py

class IssuingCA (models.Model): 
    ICA_name = models.CharField(max_length=200) 
    filepath = models.CharField(max_length=200) 
    def __str__(self): 
     return self.ICA_name 

views.py(簡易版)

def index(request): 
    issuers = IssuingCA.objects.order_by('ICA_name') 
    issuerOptions = {'issuers': issuers} 
    return render(request, 'index.html', issuerOptions) 

def results(request): 
    issuer = request.POST['selectedIssuer'] 
    issuername = 'Where I want the ICA_name value "icas" displayed' 
    info = {'issuer': issuer, 'issuername': issuername} 
    return render(request, 'results.html', info) 

index.htmlを

--snip-- 
<label for="selectedIssuers">Issuing CA</label> 
    <select id="selectedIssuers" name="selectedIssuers"> 
    {% for icas in issuers %} 
    <option value="{{ icas.filepath }}">{{ icas }}</option> 
    {% endfor %} 
--snip-- 

results.html:ここで私は場所に持っているコードがあります

--snip-- 
<div>{{ issuer }}</div> 
<div>{{ issuername }}</div> 
--snip-- 

DBのサンプルデータを設定しましょう: ICA_Name = "squirrel";アプリケーションが動作するファイルパス=「いくつかの/森/中

方法は、それがすべての値のICA_nameを表示するindex.htmlページにあるドロップダウンを提示していることです。 ICA_name(この場合は 'squirrels')を選択して送信すると、POST経由でリクエストしたsquirrels - in/some/forestのfilepathというオプションの値が渡され、結果ページに表示されます。私が欲しいのは、また、結果ページにリスの元の値を表示する方法ですissuerため、<div>のテキストが(これは現在動作します)リスを示していることなどとIssuerNameため、<div>内のテキストは、中を示し/ some/forest。あなたは手動で行う必要がある場合

答えて

0

<option>value=属性に

<option value="{{ icas.pk }}">{{ icas }}</option> 

IssuingCAインスタンスの主キーを配置し、その結果に戻ってインスタンスを取得:

issuing_ca = IssuingCA.objects.get(pk=request.POST['selectedIssuers']) 
info = {'issuer': issuing_ca.filepath, 'issuername': issuing_ca.ICA_name} 

しかし、あなたがDjangoを使用しているなら、は間違いなくのフォームを使いたいと思っています。ここで

はチュートリアルです:https://docs.djangoproject.com/en/1.10/intro/tutorial04/

、ここでは完全な文書である:https://docs.djangoproject.com/en/1.10/topics/forms/

Djangoは落とし穴のすべての種類に対してあなたを保護する入力データを管理するためのより良い方法を提供します。

+0

Hmm ..私はpk値を使用し、そのフィールドを参照することについて決して考えなかった。私はあなたが{'issuer':issuing_ca.filepath}を書くことも知っていませんでした。あなたは何か新しいことを教えてくれました!私はちょうどこれをテストし、それは動作します!ありがとうございました!以前はフォームを調べていましたが、今後のバージョンでアプリケーションを使用するようにアプリケーションを更新するつもりです。 – Eddi

+0

すぐにやってください。待たないでください。セキュリティ機能ではなくても、特に既に書かれたコード(常にメインタイムシンク)を維持/拡張する場合には、多くの時間を節約できます。 –

関連する問題