0

ORMではなく外部データベースを使用しています。テストアプリケーションを作成しています。テストが送信されたら、ユーザーのURLにテストIDが追加されたURLにリダイレクトされ、ページにテスト結果が表示されます。たとえば、「http:// domain / testplatform / 123」です。ここで、123は外部データベースから取得したテストIDです。dbには、そのテストIDのすべてのテスト結果も保持され、これらの値を取得してテンプレートで使用します。しかし、アプリにテストIDをURLに追加させることができません。これが私のコードです。

url.py

from testplatform import views
...
(r'^testplatform/(\d+)/$', views.testcriteria, 'testsubmit'),
(r'^testplatform/$', views.testcriteria),
...

このビット、r'^ testplatform /(\ d +)$'。testsubmitの値をURLに追加したいところです。r'^ testplatform / $'を使用すると、ユーザーは私が作成したフォームに移動し、テストを開始するために入力します。

views.py

from django.core.context_processors import csrf
from django.shortcuts import render_to_response
from testplatform.test_db import tests
...
def testcriteria(request):

  if request.method == 'POST':
    form = TestCriteriaForm(request.POST)
    if form.is_valid():
      ...
      cd = form.cleaned_data
      t_testname = cd['testname']
      ...
      sql = tests()
      testsubmitid = sql.tbl_test_name(t_testname)
      ...

      testsubmit = dict(testsubmitid=testsubmitid, testcriteria=testcriteria)
      testsubmit.update(csrf(request))
      return render_to_response('testsubmitted.html',testsubmit)

testsubmitidから値が返されることを確認しました。これにより、テストIDが返されます。testcriteria値は、テストされたものに関する情報を保持する外部データベースからの別のクエリから取得されます。

ただし、フォームを送信すると、ページはtestsubmitted.htmlに移動しますが、URLは「http:// domain/testplatform」です。

結果ページの新しいビューを作成し、このようなものを使用してユーザーを結果ページにリダイレクトする必要がありますか?

 return HttpResponseRedirect(reverse("testresults.views.results", args=testsubmit))

なぜこれが機能しないのか誰かに教えてもらえますか?

ありがとう-オリ

4

1 に答える 1

0

トレースバックを提供しなかったため、なぜその特定のエラーが発生するのかわかりません。また、へのリダイレクトを行うコードを示していない/testplatform/123ので、私はそれを手伝うことができません。しかし、確かにエラーがあります。そのビューはIDのパラメーターを取りません。あなたはおそらく次のようなことをする必要があります:

def testcriteria(request, submit_id=None):
于 2012-09-13T18:15:53.987 に答える