首页 > 解决方案 > 如何将三个输入组合到一个变量中并使用它使用 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>

错误

views.py 文件 urls.py 文件 Cookies

标签: djangodjango-formsdjango-viewshttp-postget-request

解决方案


在您的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')

推荐阅读