django - 如何将三个输入组合到一个变量中并使用它使用 Django 从数据库中获取数据?
问题描述
我正在做我的第一个 Django 项目,并在此过程中学到了很多东西。到目前为止,我已经建立了一个非常简单的网站,但在接下来的步骤中遇到了麻烦。通过这个项目,我希望实现一个网站,根据用户如何回答他们被问到的三个问题,为他们提供可靠的资源。
网站说明:用户打开网站,提示点击按钮进入第一步。第一步要求用户选择他们想要资源的主题(目前,所有列出的主题都与烹饪有关)。然后,他们选择自己的专业水平(初级、中级、高级)。最后,他们为他们的资源(文章/博客、视频、书籍)选择了一种首选的媒介。根据主题、他们的专业水平和他们的首选媒体,最后一页将为用户提供从链接数据库中检索到的资源。
我困在哪里:到目前为止,我已经创建了五个页面(主页、每个问题的一个页面和一个结果页面)并为每个问题设置了选项。现在,我很难找到一种方法将用户的三个答案组合成一个变量,我将使用该变量从连接的数据库中获取数据并显示相应的资源。
作为参考,我已经包含了我的“views.py”文件和“主题页面”文件中的代码(这个页面是用户选择主题过程的第 1 步。其他两个问题的格式与这个非常相似,这就是为什么我只包含此页面的代码)。如果您愿意提供帮助,请随时请求我可能提供的任何其他参考资料。此外,虽然我还没有到那一步,但我愿意接受有关将我的网站连接到数据库的指导。与往常一样,任何帮助/指导将不胜感激!谢谢 :)
view.py 代码:
from django.shortcuts import render
from django.http import HttpResponse
def HomePage(request):
return render(request, 'ResourceApp/HomePage.html')
def SubjectPage(request):
return render(request, 'ResourceApp/SubjectPage.html')
def LevelPage(request):
return render(request, 'ResourceApp/LevelPage.html')
def MediumPage(request):
return render(request, 'ResourceApp/MediumPage.html')
def ResultsPage(request):
return render(request, 'ResourceApp/ResultsPage.html')
主题页面代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Subject | Tools For Fools</title>
</head>
<body>
<h1> Step 1 </h1>
<form action="http://127.0.0.1:8000/level/">
<label for="Subject">Choose a Subject:</label>
<select id="Subject" name="Subject">
<option value="Knife Skills">Knife Skills</option>
<option value="Culinary Terms">Culinary Terms</option>
<option value="Recipes">Recipes</option>
</select>
<input type="Submit">
</form>
</body>
</html>
解决方案
在您的urls.py
包括:
urlpatterns = [
path('level/',views.LevelPage,name='levelpage'),
path('medium/',views.MediumPage,name='mediumpage'),
path('results/',views.ResultsPage,name='rpage'),
]
将您更改views.py
为:
from django.shortcuts import render
from django.http import HttpResponse
def HomePage(request):
return render(request, 'ResourceApp/HomePage.html')
def SubjectPage(request):
return render(request, 'ResourceApp/SubjectPage.html')
def LevelPage(request):
subject = request.GET.get('Subject')
response = render(request, 'ResourceApp/LevelPage.html')
response.set_cookie('subject',subject)
return response
def MediumPage(request):
level = request.GET.get('level')
response = render(request, 'ResourceApp/MediumPage.html')
response.set_cookie('level',level)
return response
def ResultsPage(request):
medium = request.GET.get('medium')
results = request.COOKIES.get('subject') + request.COOKIES.get('level') + request.COOKIES.get('medium')
return render(request, 'ResourceApp/ResultsPage.html')
推荐阅读
- c - 使用 Flex 和 Bison 输出到两个不同的文件
- kotlin - 如何修改调用扩展函数的对象本身?
- javascript - 使用 fetch 解构嵌套 json 对象的正确方法是什么?
- android - Python子进程启动Android虚拟设备但无法终止并获得错误的PID
- python - 附加列表的结束循环
- assembly - 在 MarsPlus 中运行程序时是否有任何命令代码可以清除 I/O 区域?
- security - 为什么使用字母数字会话 ID 而不是数字?
- python - 如何从 csv 文件中的文本数据中删除非英语单词(python)
- xamarin - 单击 Xamarin.Forms App 中的导航按钮时系统抛出异常
- linux - 我已经在我的虚拟机CentOS7上安装并配置了Graylog 3.0,在centos7上可以通过IE访问,但在本地无法访问