0

これが私のコーディングです:

ビュー.py

def form_valid(self, form):
    form.save()
    return HttpResponseRedirect(reverse("departmentt_view"))

関連するテンプレート:

<form action="{% url Condition_view department_id patient_NO %}" method="post">
    {% csrf_token %}
<input type="submit" value="Save"/>

保存をクリックすると、admin.py のデータベースが更新され、最初のページに戻りますdepartmentt_view。しかし、保存をクリックすると空白(ホワイトページ)が返されますが、同じ追加を指しています127.0.0.1:8000/Diablo/1/123456/Condition

誰でもこれについて私を助けることができますか?よろしくお願いします。

編集したプログラム:

view.py

def form_valid(self, request, department_id, patient_NO):
    if request.method == 'POST':
        form = ConditionForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse("departmentt_view"))
    return(reverse("form_valid"))

urls.py

url(r'^diablo/(?P<department_id>\d+)/(?P<patient_NO>\d+)/Condition/$', 'diabloreb.views.form_valid', name='form_valid'),

could not import diablorab.views.form_validこのコードに変更した後、親モジュールが存在しないという別のエラーが発生しました。

だから私は代わりにこれに戻ります

url(r'^diablo/(?P<department_id>\d+)/(?P<patient_NO>\d+)/Condition/$', ConditionView.as_view(), name = 'Condition_view',),

この URL に変更すると、白いページのみが表示される同じ出力が得られます。

関連テンプレート

<form action="." method="post">
    {% csrf_token %}
<input type="submit" value="Save"/>

私は完全に迷っています。誰でも私を助けることができますか?どうもありがとう。

4

1 に答える 1

0

試す:-

<form action="." method="post">
    {% csrf_token %}
<input type="submit" value="Save"/>

したがって、同じページに送信されます。

この同じページが127.0.0.1:8000/Diablo/1/123456/Conditionである場合、この URL には 3 つの異なるパラメータが含まれているようです。

urls.py 正規表現は、ビュー関数を指す必要があります。たとえば、次のようにします。

url(r'^Diablo/(?P<department_id>\d+)/(?P<patient_NO>\d+)/condition/$',   
'yourapp.views.form_valid',
name='form_valid'),

form_validビュー関数の定義は、次のように合計 4 つの引数を受け入れる必要があります。

def form_valid(request, department_id, patient_NO):

    form = YourForm()

    if request.POST == 'POST':
        form = YourForm(request.POST)
        if form.is_valid():
            # do whatever you else you need.
            form.save()  
            return HttpResponseRedirect(reverse("departmentt_view"))

    return(reverse("form_valid")

form.save()コードに表示されているものを宣言するほど単純ではないことに注意してください。YourFormビュー関数がそれを使用しform = YourForm(request.POST)、フォーム クラスがPOST-フォームを送信しているユーザーからの ed 変数 (いわば「POST リクエスト」)。

編集済み

ビュー関数は 2 つの引数のみを受け入れます。

于 2012-11-05T00:20:28.827 に答える