正确地告诉我,显示详细的描述

问题描述 投票:0回答:1

我不知道我以前没有这个论坛时过得如何:)请告诉我,我哪里出了问题?我在视图中创建了一个行为模型,创建了一个URL,但是当我单击标题时,它不会转到事件的详细描述。我在DetailViews中继承的内容会出错吗?我在下面附上代码

视图:

from django.shortcuts import get_object_or_404, render
from django.views.generic import DetailView
from django.views.generic.base import View

from .models import Blog, Event
# Create your views here.



class EventView(View):
    def get(self, request):
        events = Event.objects.all()
        posts = Blog.objects.all()
        return render(request, "home/home.html", {"events": events, "posts":posts})


class BlogDetailView (View):
    def get(self, request, slug):
        posts = Blog.objects.get(url=slug)
        return render(request, "home/blog-detail.html", {"posts": posts})


class EventViewDetail(DetailView):
    model = Event
    template_name = "event/event-detail.html"
    slug_field = "name"

URL:

from django.urls import path
from . import views

urlpatterns = [
    path("", views.EventView.as_view()),
    path("<slug:slug>/", views.BlogDetailView.as_view(), name="home_detail"),
    path("event/<str:slug>/", views.EventViewDetail.as_view(), name="event_detail")
]

HTML:

<!-- Latest-Events-Sermons -->
<section class="section-padding latest_event_sermons m-0">
    <div class="container">
        <div class="row">
            <div class="col-md-6 col-lg-5">
                <div class="heading">
                    <h3>Анонс событий</h3>
                    <a href="#" class="btn btn-secondary btn-md pull-right">Показать все</a>
                </div>
                <div class="event_list">
                    <ul>
                        {% if events %}
                            {% for e in events %}
                                <li>
                                    <div class="event_info">
                                        <div class="event_date">
                                            <span>{{ e.dataStart}}</span>
                                        </div>
                                        <h6><a href="{% url "event_detail" %}">{{ e.name }}</a></h6>
                                        <ul>
                                            <li><i class="fa fa-clock-o"></i>{{ e.dataStart }}</li>
                                            <li><i class="fa fa-map-marker"></i> {{ e.adress}}</li>
                                        </ul>
                                    </div>
                                </li>
                            {% endfor %}
                        {% else %}
                            <p>У вас нет материала</p>
                        {% endif %}
                    </ul>
                </div>
            </div>

型号:

from django.db import models
from datetime import date
from django.urls import reverse

# Create your models here.


class Blog(models.Model):
    """Новости"""
    name = models.CharField("Заголовок", max_length=100)
    description = models.TextField("Описание")
    descriptionTwo = models.TextField("Описание (второй абзац)", blank=True, default="")
    blockquote = models.TextField("Цитата", blank=True, default="")
    short = models.TextField("Краткое описание", max_length=300)
    poster = models.ImageField("Изображение", upload_to="news/")
    prewiew = models.ImageField("Превью", upload_to="news/")
    dataPost = models.DateField("Дата публикации", default=date.today)
    url = models.SlugField(max_length=160, unique=True, blank=True)
    draft = models.BooleanField("Черновик", default=False)


    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("home_detail", kwargs={"slug": self.url})


    class Meta:
        verbose_name = "Новости"
        verbose_name_plural = "Новости"


class Event(models.Model):
    """События"""
    name = models.CharField("Заголовок", max_length=100)
    adress = models.TextField("Адрес")
    description = models.TextField("Описание")
    short = models.TextField("Краткое описание")
    phone = models.TextField("Контактный номер телефона")
    email = models.EmailField()
    image = models.ImageField("Изображение", upload_to="event/")
    dataStart = models.DateField("Дата старта", default=date.today)

    def __str__(self):
        return self.name


    class Meta:
        verbose_name = "Событие"
        verbose_name_plural = "События"
python html django url view
1个回答
1
投票

event_detail应该在您未传递的模板上收到一个参数条。所以你可以做这样的事情,

<h6><a href="{% url "event_detail" e.slug %}">{{ e.name }}</a></h6>

注意:您的子弹不能为空,在管理页面上注册模型时,您可以用event_name预先填充子弹。prepopulated_fields = {“ slug”:(“ event_name”,)}要么除了使用Slug,您还可以使用pk

<h6><a href="{% url "event_detail" e.pk %}">{{ e.name }}</a></h6>

我希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.