我构建了一个小型调查应用程序,通过随机选择URL的最后一部分并将其附加到按钮链接上,将参与者随机分配到9条路径中的一条。然后{% if 'surveyone' in request.path %}
,我在模板标签中使用eg等向用户显示正确的内容。
这在我的本地计算机上运行良好,但是自从我发现多线程处理并使用如下所示的常量列表后,SURVEY_URLS
在将项目上载到服务器时就引起了问题。我想改为将其存储在我的数据库中。
问题)
SURVEY_URLS
在MySQL数据库中添加/存储以下字符串列表?以下是我现有的代码,它具有我需要的所有功能,并且可以在我的机器上正常工作。与多个并发用户打交道时,我只需要使其正常工作即可。
谢谢
views.py
SURVEY_URLS = ['/surveyone/', '/surveytwo/', '/surveythree/', '/surveyfour/', '/surveyfive/', '/surveysix/', '/surveyseven/', '/surveyeight/', '/surveynine/']
def begin(request):
total_path_counter = TotalCounter.objects.get_or_create(total_max_counter__gte=0)[0]
if total_path_counter.total_max_counter < 100:
survey_url = random.choice(SURVEY_URLS)
if survey_url == '/surveyone/':
survey_path_counter = SurveyCounter.objects.get_or_create(survey_wizard_type = 'survey_wizard_one')[0]
if survey_path_counter.survey_wizard_count > 9:
SURVEY_URLS.remove('/surveyone/')
elif survey_url == '/surveytwo/':
survey_path_counter = SurveyCounter.objects.get_or_create(survey_wizard_type = 'survey_wizard_two')[0]
if survey_path_counter.survey_wizard_count > 9:
SURVEY_URLS.remove('/surveytwo/')
....
....
elif survey_url == '/surveynine/':
survey_path_counter = SurveyCounter.objects.get_or_create(survey_wizard_type = 'survey_wizard_nine')[0]
if survey_path_counter.survey_wizard_count > 9:
SURVEY_URLS.remove('/surveynine/')
return render(request, 'Begin.html', {'survey_url': survey_url})
else:
return render(request, 'surveyfull.html')
Begin.html
<a class="btn btn-success" href="/experiment{{survey_url}}">Begin Instruction Tasks</a>
好吧,我想您可以创建一个新的模型,如下所示:
class Survey(model.Model):
name = models.Charfield(max_length=50) # surveyone goes here
...
比视图中您可以像这样拉随机:
survey_count = Survey.objects.all().count()
random_survey_index = random.randint(0, survey_count - 1)
通过获取实例名称random_survey_index
并将其附加到您的网址中
不确定这种方法的有效性如何,但是应该可行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句