让django url使用参数

时间:2012-09-13 16:50:34

标签: django url views

我使用的是外部数据库而不是ORM。我正在编写测试应用程序,并且在提交测试时,我希望将用户重定向到URL,该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,但是网址只是“http:// domain / testplatform”

我应该为结果页面创建一个新视图并使用类似的东西将用户重定向到结果页面吗?

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

任何人都可以帮忙告诉我为什么这不起作用吗?

谢谢 - Oli

1 个答案:

答案 0 :(得分:0)

我不知道你为什么会遇到这个特定的错误,因为你没有提供追溯。您还没有显示任何可以重定向到/testplatform/123的代码,所以我无法帮助您。但肯定有一个错误:该视图没有为ID提供参数。您可能需要执行以下操作:

def testcriteria(request, submit_id=None):