【问题标题】:TemplateDoesNotExist at /poll/poll/result.html/poll/poll/result.html 中的 TemplateDoesNotExist
【发布时间】:2019-03-05 23:18:10
【问题描述】:

我在 /poll/poll/result.html 处收到此错误 TemplateDoesNotExist ....我想我指向 poll/poll/result.html 但如何将其指向 poll/result.html

{'Gender': <QuerySet [{'Gender': 'female', 'Diseases': 'Malaria', 'Number': 1}, {'Gender': 'female', 'Diseases': 'cholera', 'Number': 2}

我是 django 的新手,但我可能在这里做错了什么。这是 template.html 的文件结构:mysite/polls/templates/polls/template.html 和 result.html 的 mysite/polls/templates/民意调查/result.html

Views.py

from django.views.generic import ListView, CreateView, UpdateView
from django.urls import reverse_lazy
from . models import MyModel
from . forms import MyModelForm
from django.db.models import Count
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, HttpResponseRedirect
from django.urls import reverse
from django.views.generic.list import ListView


class CreateMyModelView(CreateView):
    model = MyModel
    form_class = MyModelForm
    template_name = 'poll/template.html'
    success_url = 'poll/result.html'


class MyModelListView(ListView):
    model = MyModel

    def get_queryset(self):
        queryset = MyModel.objects.values('Gender', 'Diseases').annotate(Number=Count("Gender"))
        return render('poll/result.html', {'Gender': queryset})

urls.py

from django.conf.urls import url

from django.urls import path
from . import views

urlpatterns = [
                url(r'^$', views.CreateMyModelView.as_view(), name='abc'),
                path('poll/result.html', views.MyModelListView.as_view(), name='result'),
]

models.py

from django.db import models

Gender = (
    ('male', 'MALE'),
    ('female', 'FEMALE'),
)

Diseases = (
    ('cholera', 'CHOLERA'),
    ('hiv', 'HIV'),
    ('Malaria', 'MALARIA'),
    ('Typhoid', 'TYPHOID'),
)


class MyModel(models.Model):
    Gender = models.CharField(max_length=16, choices=Gender, default='MALE')
    Diseases = models.CharField(max_length=16, choices=Diseases, default='MALARIA')
    vote = models.IntegerField(default=0)

    def __str__(self):
        return self.Gender

    def __str__(self):
        return self.Diseases

结果.html

{% extends 'polls/base.html' %}

{% block main_content %}

<h1></h1>

<ul>
    {% for choice in Gender %}
        <li> {{choice.Gender}} - {{choice.Diseases}} - {{ choice.Number}}</li>
    {% endfor %}
</ul>


<a href="{% url 'poll:template' question.id %}">Vote Again?</a>\\

{% endblock %}

【问题讨论】:

    标签: django django-models django-forms django-templates django-views


    【解决方案1】:

    您的模板位于“polls/result.html”,但您告诉视图它是“poll/result.html”。

    (请注意,您真的不应该为您的 URL 提供以“html”结尾的路径;这不是必需的,这会让您感到困惑。URL 和模板位置彼此无关。)

    【讨论】:

    • 如何让它指向 poll/result.html 而不是 polls/result.html
    • 换行:template_name = 'poll/template.html'
    猜你喜欢
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多