我有一个问题,我几天都在苦苦挣扎。
我需要随机将用户分配到三个不同的调查之一。每项调查都包含在SessionWizardView
中。我一直试图找出如何在用户点击我已经包含在<form>
的start.html
<form action="" method="get">
<a class="btn btn-success">START</a>
</form>
urls.py
我的URLconf用于起始页面和每个SessionWizardViews
url(r'^start/$', survey_views.start),
url(r'^surveyone/$', SurveyWizardOne.as_view([SurveyFormA, SurveyFormB, SurveyFormC, SurveyFormD ])),
url(r'^surveytwo/$', SurveyWizardTwo.as_view([SurveyFormA, SurveyFormB, SurveyFormC, SurveyFormD ])),
url(r'^surveythree/$', SurveyWizardThree.as_view([SurveyFormA, SurveyFormB, SurveyFormC, SurveyFormD ])),
views.py
def start(request):
return render(request, 'start.html')
class SurveyWizardOne(SessionWizardView):
def done(self, form_list, **kwargs):
return render_to_response('Return_to_AMT.html', {
'form_data': [form.cleaned_data for form in form_list],
})
class SurveyWizardTwo(SessionWizardView):
def done(self, form_list, **kwargs):
return render_to_response('Return_to_AMT.html', {
'form_data': [form.cleaned_data for form in form_list],
})
class SurveyWizardThree(SessionWizardView):
def done(self, form_list, **kwargs):
return render_to_response('Return_to_AMT.html', {
'form_data': [form.cleaned_data for form in form_list],
})
我不确定从哪里开始。我完全很困惑如何将URL返回给用户,我希望这是有道理的。我是Django / Python的新手,之前从未使用过MCV框架。
我能够弄清楚它的随机方面,就像我几年前在Java中做过的那样,但它只是在一个自包含的程序中。在这种情况下,我甚至不确定应该去哪里
答案 0 :(得分:4)
您可以使用内置的django random
模板过滤器(https://docs.djangoproject.com/en/dev/ref/templates/builtins/#random)在视图代码或模板中生成随机链接。以下代码是第一选择:
def start(request):
survey_urls = ['/surveyone/', '/surveytwo/', '/surveythree/']
survey_url = random.choice(surveys)
return render(request, 'start.html', {'survey_url': survey_url})
然后在您的模板中执行标准
<a class="btn btn-success" href="{{survey_url}}">START</a>
您还可以考虑在urls.py中使用reverse
函数(https://docs.djangoproject.com/en/dev/ref/urlresolvers/#django.core.urlresolvers.reverse)提供您的网址名称参数,以便survey_urls
列表不会被硬编码。