• Django 入门学习总结5


    修改polls/detail.html文件,写一个表单:


        {% csrf_token %}
       

           

    {{ question.question_text }}


            {% if error_message %}

    {{ error_message }}

    {% endif %}
            {% for choice in question.choice_set.all %}
               
               

            {% endfor %}
       

       
       

    修改polls/views.py文件:

    from django.http import HttpResponse, HttpResponseRedirect
        from django.shortcuts import get_object_or_404, render
        from django.urls import reverse

        from .models import Choice, Question


        # ...
        def vote(request, question_id):
            question = get_object_or_404(Question, pk=question_id)
            try:
                selected_choice = question.choice_set.get(pk=request.POST["choice"])
            except (KeyError, Choice.DoesNotExist):
                # Redisplay the question voting form.
                return render(
                    request,
                    "polls/detail.html",
                    {
                        "question": question,
                        "error_message": "You didn't select a choice.",
                    },
                )
            else:
                selected_choice.votes += 1
                selected_choice.save()
                # Always return an HttpResponseRedirect after successfully dealing
                # with POST data. This prevents data from being posted twice if a
                # user hits the Back button.
                return HttpResponseRedirect(reverse("polls:results", args=(question.id,)))

    和结果方法:

    def results(request, question_id):
            question = get_object_or_404(Question, pk=question_id)
            return render(request, "polls/results.html", {"question": question})

    创建polls/results.html页面,内容为:

    最好用少的代码

    修改polls/urls.py文件为:

    from django.urls import path
    from . import views

    app_name = "polls"
    urlpatterns = [
        path("", views.IndexView.as_view(), name="index"),
        path("/", views.DetailView.as_view(), name="detail"),
        path("/results/", views.ResultsView.as_view(), name="results"),
        path("/vote/", views.vote, name="vote"),
    ]

    修改视图

    修改文件polls/views.py:

    from django.http import HttpResponseRedirect
    from django.shortcuts import get_object_or_404, render
    from django.urls import reverse
    from django.views import generic
    from .models import Choice, Question

    class IndexView(generic.ListView):
        template_name = "polls/index.html"
        context_object_name = "latest_question_list"

        def get_queryset(self):
            """Return the last five published questions."""
            return Question.objects.order_by("-pub_date")[:5]


    class DetailView(generic.DetailView):
        model = Question
        template_name = "polls/detail.html"


    class ResultsView(generic.DetailView):
        model = Question
        template_name = "polls/results.html"

    可以重新在网址上测试下。

  • 相关阅读:
    安装ubuntu20.04, CUDA11.4, cnDNN, tensorflow, pytorch
    轻量型服务器能支撑多少人访问?
    人工智能基础 | 机器学习模型评估与选择(二)
    非关系型数据库技术课程 第三周作业(Redis中的订阅与发布、事务机制、集合(set)数据类型实验)
    nginx日志切割/截断
    python中的属性管理机制
    阿里云云原生一体化数仓—离线实时一体化新能力解读
    QT之QScriptEngine的用法介绍
    未来三年「超千万辆」市场空间,行泊一体赛道进入甜蜜期
    Andorid复习
  • 原文地址:https://blog.csdn.net/computerclass/article/details/134515294