获取django url以使用参数

获取django url以使用参数,django,url,views,Django,Url,Views,我使用的是外部数据库,而不是ORM。我正在编写一个测试应用程序,当提交测试时,我希望用户被重定向到一个URL,该URL将附加他们的测试ID,页面应该显示他们的测试结果。例如,”http://domain/testplatform/123其中123是来自外部数据库的测试ID。db还保存该测试ID的所有测试结果,我在模板中获取并使用这些值。但我无法让应用程序将测试ID附加到URL。这是我的密码 url.py from testplatform import views ... (r'^testpla

我使用的是外部数据库,而不是ORM。我正在编写一个测试应用程序,当提交测试时,我希望用户被重定向到一个URL,该URL将附加他们的测试ID,页面应该显示他们的测试结果。例如,”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))
有人能告诉我为什么这不起作用吗


谢谢-奥利

我不知道你为什么会出现这样的错误,因为你没有提供回溯。您还没有显示任何可以重定向到
/testplatform/123
的代码,因此对此我无能为力。但肯定存在一个错误:该视图没有为ID获取参数。您可能需要执行以下操作:

def testcriteria(request, submit_id=None):

我认为我在这里的逻辑是有缺陷的,这将不会工作,因为它的立场。所以有些东西需要改变,但我不知道是什么。提交表单后,操作如下重定向。正如我在url.py中所希望的那样,testcriteria()的视图随后处理清理后的_数据,这是在我收集post数据时,然后我尝试使用render_to_响应('testsubmitted.html'…)这一逻辑是否有缺陷?但这里没有重定向!将表单提交到/testplatform/,这就是处理表单和呈现模板的URL。您希望/123/如何显示在URL中?如果你想转到另一个URL,你需要实际重定向到它。那么我应该创建一个新的视图,然后使用类似的东西:HttpResponseRedirect(反向(“testresults.views.results”,args=[testsubmit])。