Django=約1週間前に学習を開始し、壁にぶつかりました。啓発を本当に感謝します...
models.py
_class data(models.Model):
course = models.CharField(max_length = 250)
def __str__(self):
return self.course
_
html
Models.courseのオブジェクトをschlistに変換しました
_<link rel="stylesheet" type="text/css" href="{% static '/chosen/chosen.css' %}" />
<form action={% views.process %} method="GET">
<div>
<h4 style="font-family:verdana;">First Course: </h4>
<select data-placeholder="Course" style="width:350px;" class="chosen-select" tabindex="7">
<option value=""></option>
{% for item in schlist %}
<option> {{ item }} </option>
{% endfor %}
</select>
</div>
</br>
<div>
<h4 style="font-family:verdana;">Second Course:</h4>
<select data-placeholder="Course" style="width:350px;" class="chosen-select" tabindex="7">
<option value=""></option>
{% for item in schlist %}
<option> {{ item }} </option>
{% endfor %}
</select>
</div>
</br>
<input type="submit" value="Compare!" />
</form>
_
urls.py(これが機能するかどうか疑問に思っています...)
_urlpatterns = [
url(r'^(\d+)/(\d+)$',views.process, name = 'process'),
]
_
view.py
_def process(request,q1 ,q2):
obj1= get_object_or_404(Schdata, course = q1)
obj2= get_object_or_404(Schdata, course = q2)
........
_
フォームアクションがアクションを指示することが可能かどうか疑問に思っていました
(1)view.pyまたは(2)2つの引数が選択されたurl.py(および最終的にはview.py)?
もしそうなら、フォームアクションはどうあるべきですか? {{view?}}または{{url?}}。 HTMLで引数の定義を見逃していますか?
Views.pyへのリダイレクト:
ユーザー入力はCharField
で、_get_object_or_404
_を使用してモデルpkを取得できます。ただし、urls.pyを定義すると、url引数が主キーであるため、Noreverseエラーが発生します。
Urls.pyへのリダイレクト:
URL引数は主キーです。私の見たところ、urls.pyに渡す前に、ユーザー入力Charfield
をpkに魔法のように変換する必要があります。
Djangoのget()
の(または)関数はありますか?例:get_object_or_404(pk = q1 or course = q1)
?
本当にアドバイスをいただければ幸いです。何時間もこれを見つめていた。
DjangoでURLの逆解決を使用しようとしています。
あなたのhtmlファイルで次の正しいフォームアクションURLとメソッドはPOSTでなければなりません:
<form action={% url 'process' %} method="POST">
パラメータを一緒に渡そうとしている場合は、これを使用してください:
<form action={% url 'process' request.user.id 4 %} method="POST">
リファレンス: https://docs.djangoproject.com/en/1.10/topics/http/urls/
はい私は遅れていますが、Djangoがリクエストを処理する方法を理解するために他の人を助けることができます。
Django 3.0パターン
Djangoがリクエストを処理する方法
基本:
詳しく読む:
公式Djangoドキュメントの方法Djangoリクエストを処理する
これらはあなたのURLパターンです:
urlpatterns = [ path('profile/edit/<int:pk>/',views.editprofile, name='editprofile'),]
Urlpatternsの3番目の引数は、urlパターンをcurrentからthisに変更する場合に使用します。
urlpatterns = [ url('profile/edit/user/id/<int:pk>',views.editprofile, name = 'editprofile'),]
URL名を使用するすべてのテンプレートでURLパターンを再定義する必要はありません。
例:
これは私のテンプレートですprofile.htmlハードコードされたURLではなくURL名を使用しました。
<a class="item" href="{% url 'editprofile' user.id %}" >Edit profile </a>
問題の解決策:
。html
テンプレートでハードコードされたURLの代わりにURL名のみを使用し、引数を渡します。
<form action={% process no_of_arguments %} method="POST">
views.py
ここでリクエストを処理できます
def process(request,no_of_arguments):
良くなるDjango開発者
モデルにDjango ModelFormsを使用することもできます。モデルフォームまたは単純なフォームを使用すると、複数のことができます