3

私はdjango 1.4を使用しており、古いバージョンのdjangoを使用するチュートリアルに従っています。Page をモデルとして wiki アプリを作成する簡単なチュートリアルです。

問題は、フォームの POST メソッドに対応するビュー関数が呼び出されないことです。

これは urls.py の内容です:

url(r'^wikicamp/(?P<page_name>[^/]+)/edit/$', 'wiki.views.edit_page'),
url(r'^wikicamp/(?P<page_name>[^/]+)/save/$', 'wiki.views.save_page'),
url(r'^wikicamp/(?P<page_name>[^/]+)/$', 'wiki.views.view_page'),

テンプレート edit.html の内容は次のとおりです。

<from method = "get" action="/wikicamp/{{page_name}}/save/">
{% csrf_token %}
    <textarea name = "content" rows="20" cols="60">
    {{content}}
    </textarea>
    <br/>
    <input type="submit" value="Save Page"/>
</form>
<a href="/wikicamp/{{page_name}}/save/">this is link to save</a>

これは、views.py のコンテンツです。

def edit_page(request, page_name):
try:
    page = Page.objects.get(pk=page_name)
    content = page.content
except Page.DoesNotExist:
    content = ""
return render_to_response("edit.html", {"page_name":page_name, "content":content}, context_instance=RequestContext(request))

def save_page(request, page_name):
    return HttpResponse("You're looking at the page %s." % page_name)

最初は csrf 関連のエラーが発生していましたが、https: //docs.djangoproject.com/en/dev/ref/contrib/casrf/ で提供されているすべての修正を試し、POST と django に関連する多くのスタックオーバーフローの質問に従いました。[ページを保存] ボタンをクリックしても何も起こりません。フォームからリクエストが送信されていない (firebug を使用して HTTP リクエストとレスポンスを追跡する)

4

3 に答える 3

4

HTML にタイプミスがあります:fromの代わりにform.

お気づきかもしれませんが、そのコードは実際には何も節約しません。あなたがどのブログをフォローしているのかはわかりませんが、ドキュメントの公式の Django チュートリアルに従ってから、フォームのドキュメントを読んだほうがよいでしょう。

于 2013-04-15T12:27:28.890 に答える
1

methodフォームを変更する必要がある場合があり"POST"ます。

<from method = "get" action="/wikicamp/{{page_name}}/save/">

<form method = "post" action="/wikicamp/{{page_name}}/save/">
于 2013-04-15T12:26:47.790 に答える