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))
なぜこれが機能しないのか誰かに教えてもらえますか?
ありがとう-オリ