python - 进行一项调查,告诉用户他们的大学专业匹配。使用 django 和 python
问题描述
首先,我正在做的项目应该给用户一个多项选择测验/调查,让他们知道什么大学专业最适合他们,并根据他/她选择的答案。我的问题主要是如何将答案和专业联系起来,以便在用户完成专业时选择。如果在理解我试图解释的内容时有任何问题,请告诉我。欢迎所有建议和批评我真的想在我的编程中变得更好。我基本上是想让我的程序在链接中执行此操作。 https://www.luc.edu/undergrad/academiclife/whatsmymajorquiz/
class User(models.Model):
first_name = models.CharField(max_length=25)
last_name = models.CharField(max_length=25)
#password = models.CharField(max_length=25)
email = models.EmailField(max_length=10)
class Quiz(models.Model):
name = models.CharField(max_length=200)
NOQ = models.IntegerField(default=1)
class Meta:
verbose_name = "Quiz"
verbose_name_plural = "Quizzes"
def __str__(self):
return self.name
#number Of Questions
class Major(models.Model):
major = models.CharField(max_length=200)
majorData = models.IntegerField(default=0)
def __str__(self):
return self.major
class Question(models.Model):
question_text = models.CharField(max_length=400)
quiz = models.ForeignKey("Quiz", on_delete=models.CASCADE, null=True)
def __str__(self):
return self.question_text
class Answer(models.Model):
question = models.ForeignKey('Question', on_delete=models.CASCADE, null=True)
answer_text = models.CharField(max_length=200)
def __str__(self):
return self.answer_text
class QuizTaker(models.Model):
user = models.ForeignKey("User", on_delete=models.CASCADE)
quiz = models.ForeignKey("Quiz", on_delete=models.CASCADE)
completed = models.BooleanField(default=False)
def __str__(self):
return self.user
视图.py
def index(request):
return render(request,"JSUMA/JSUMA.html",)
def register(response):
if response.method == "POST":
form = RegisterForm(response.POST)
if form.is_valid():
form.save()
return redirect("/JSUMA/")
else:
form = RegisterForm()
return render(response, "register/register.html", {"form":form})
def contactview(request):
name=''
email=''
comment=''
form= ContactForm(request.POST or None)
if form.is_valid():
name= form.cleaned_data.get("name")
email= form.cleaned_data.get("email")
comment= form.cleaned_data.get("comment")
if request.user.is_authenticated():
subject= str(request.user) + "'s Comment"
else:
subject="A Visitor's Comment"
comment= name + "with the email," + email + ",sent the following message:\n\n" + comment
send_mail(subject, comment, '', [email])
context={'form': form}
return render(request, '/contact/contact.html', context)
else:
context= {'form': form}
return render(request, 'contact/contact.html', context)
class QuizView(generic.DetailView):
model = Question
template_name = 'JSUMA/quiz.html'
def get_queryset(self):
return Question.objects
class ResultsView(generic.DetailView):
model = Question
template_name = 'JSUMA/results.html'
def choice(request, question_id):
question = get_object_or_404(Question, pk=question_id)
try:
selected_choice = question.choice_set.get(pk=request.POST['answer'])
except (KeyError, Answer.DoesNotExist):
return render(request, 'JSUMA/quiz.html', {'question' : question,
'error_message' : "You didn't select an answer",})
else:
selected_choice.major_data += 1
selected_choice.save()
return HttpResponseRedirect(reverse('JSUMA:results', args=question.id))
管理员.py
class AnswerInline(admin.TabularInline):
model = Answer
extra = 3
max_num = 4
class QuestionInline(admin.TabularInline):
model = Question
inlines = [AnswerInline]
extra = 19
class QuestionAdmin(admin.ModelAdmin):
inlines = [AnswerInline]
class QuizAdmin(admin.ModelAdmin):
inlines = [QuestionInline]
admin.site.register(Question, QuestionAdmin)
admin.site.register(Answer)
admin.site.register(Major)
admin.site.register(Quiz, QuizAdmin)
此外,我第一次真正对网站、数据库等做任何事情。代码看起来也有点奇怪(尤其是在视图中)b/c 我试图整合来自另一个项目的代码来提供帮助。在contactForm 视图之后,我开始尝试。我会继续尝试自己解决这个问题,但随着我的最后期限临近,这是我能想到的唯一寻求帮助的选择。
解决方案
推荐阅读
- amazon-web-services - 这与 AWS Cognito 电子邮件定制有关吗?
- html - 无法向下滚动 HTML 页面以查看完整内容
- ios - 获取核心蓝牙服务和特征字符串
- c# - 如何将函数装箱为对象类型?
- computer-vision - 计算机视觉练习
- python - 如何通过将 dict 键替换为其值来形成字符串
- python - Python 列表想要列表的总和,不包括从列表中的数字到另一个数字的值范围,在本例中为 6 到 9
- android - 为什么Android ViewPager2 类是final?
- excel - 如何根据当前工作表路径进行合并
- sql - 如何覆盖此函数以将数据存储在数据库中?