Python 请正确告诉我以显示详细说明
我不知道没有这个论坛我是怎么生活的:)请告诉我,我哪里出错了?我在视图中创建了一个行为模型,创建了一个URL,但当我单击标题时,它不会转到事件的详细描述。我在DetailView中继承的内容可能有错误吗?我附上下面的代码 视图:Python 请正确告诉我以显示详细说明,python,html,django,url,view,Python,Html,Django,Url,View,我不知道没有这个论坛我是怎么生活的:)请告诉我,我哪里出错了?我在视图中创建了一个行为模型,创建了一个URL,但当我单击标题时,它不会转到事件的详细描述。我在DetailView中继承的内容可能有错误吗?我附上下面的代码 视图: from django.shortcuts import get_object_or_404, render from django.views.generic import DetailView from django.views.generic.base impor
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"
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 = "События"
from django.shortcuts import get_object_or_404, render
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(View):
def get(self, request, slug):
events = Event.objects.get(url=slug)
return render(request, "event/event-detail.html", {"events": events})
from django.urls import path
from . import views
urlpatterns = [
path("", views.EventView.as_view()),
path("news/<slug:slug>/", views.BlogDetailView.as_view(), name="home_detail"),
path("event/<slug:slug>/", views.EventViewDetail.as_view(), name="event_detail"),
]
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)
url = models.SlugField(max_length=160, blank=True)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("event_detail", kwargs={"slug": self.url})
class Meta:
verbose_name = "Событие"
verbose_name_plural = "События"
<!-- 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="{{ e.get_absolute_url }}">{{ 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>
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")
]
<!-- 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>
event_detail应该在模板上接收一个您不传递的参数slug。 所以你可以这样做
<h6><a href="{% url "event_detail" e.slug %}">{{ e.name }}</a></h6>
注意:您的slug不能为空,您可以在管理员页面上注册您的模型时用事件名称预先填充slug,即。
预填充的_字段={“slug”:(“事件_名称”,)}
或
与其使用slug,不如使用pk
<h6><a href="{% url "event_detail" e.pk %}">{{ e.name }}</a></h6>
我希望这有帮助。尽管如此,我还是解决了这个问题。我从博客中复制了事件代码VIEV和URL。但它不是那样工作的,因为url匹配,我只是在url目录中给每个人我的url。这是解决方案代码 非常重要的一点是,通过单击主页上的活动标题来打开。get_absolute_url函数负责链接的地址,在models.py中查找该函数 视图:
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"
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 = "События"
from django.shortcuts import get_object_or_404, render
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(View):
def get(self, request, slug):
events = Event.objects.get(url=slug)
return render(request, "event/event-detail.html", {"events": events})
from django.urls import path
from . import views
urlpatterns = [
path("", views.EventView.as_view()),
path("news/<slug:slug>/", views.BlogDetailView.as_view(), name="home_detail"),
path("event/<slug:slug>/", views.EventViewDetail.as_view(), name="event_detail"),
]
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)
url = models.SlugField(max_length=160, blank=True)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("event_detail", kwargs={"slug": self.url})
class Meta:
verbose_name = "Событие"
verbose_name_plural = "События"
<!-- 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="{{ e.get_absolute_url }}">{{ 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>
URL:
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"
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 = "События"
from django.shortcuts import get_object_or_404, render
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(View):
def get(self, request, slug):
events = Event.objects.get(url=slug)
return render(request, "event/event-detail.html", {"events": events})
from django.urls import path
from . import views
urlpatterns = [
path("", views.EventView.as_view()),
path("news/<slug:slug>/", views.BlogDetailView.as_view(), name="home_detail"),
path("event/<slug:slug>/", views.EventViewDetail.as_view(), name="event_detail"),
]
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)
url = models.SlugField(max_length=160, blank=True)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("event_detail", kwargs={"slug": self.url})
class Meta:
verbose_name = "Событие"
verbose_name_plural = "События"
<!-- 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="{{ e.get_absolute_url }}">{{ 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>
HTML主页(阻止“事件”):
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"
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 = "События"
from django.shortcuts import get_object_or_404, render
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(View):
def get(self, request, slug):
events = Event.objects.get(url=slug)
return render(request, "event/event-detail.html", {"events": events})
from django.urls import path
from . import views
urlpatterns = [
path("", views.EventView.as_view()),
path("news/<slug:slug>/", views.BlogDetailView.as_view(), name="home_detail"),
path("event/<slug:slug>/", views.EventViewDetail.as_view(), name="event_detail"),
]
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)
url = models.SlugField(max_length=160, blank=True)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("event_detail", kwargs={"slug": self.url})
class Meta:
verbose_name = "Событие"
verbose_name_plural = "События"
<!-- 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="{{ e.get_absolute_url }}">{{ 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>
Анонс событий
{%if events%}
{事件%中的e的%s}
-
{{e.dataStart}}
- {{e.dataStart}}
- {{e.address}
{%endfor%}
{%else%}
аааааааа
{%endif%}
HTML事件页面(阻止“内容”)
20
8月19日
{{events.name}
- {{event.dataStart}
- {{event.address}}t
{{events.description}}
- 互联网倾向于重复预定义的块
- 与流行的观点相反,Lorem Ipsum不仅仅是
- 另一方面,我们以正义的方式谴责
- 在一个自由的时刻,当我们选择的力量
无拘无束
- 但是,在某些情况下,我们必须承担责任
共享:
2评论
-
/2018年5月15日
那只远地老鼠来自纽特远豹鹤洛里基特
唉,眼镜蛇横穿了许多地方
唉,可怜的金翅雀无情地检查着,那是越来越多的
哎呀
-