python - 单击时列表视图对象未重定向到详细视图
问题描述
我正在尝试创建一个博客,我可以通过基于类的列表视图在我的博客模型中显示对象列表。但是当尝试通过基于函数的详细视图单独显示它们时,我收到 404 错误。
(当前路径 blog/1 与其中任何一个都不匹配。)
我也尝试过基于班级的观点,但不幸的是没有成功..请看..
模型.py
from django.db import models
import datetime
# Create your models here.
class BlogPost(models.Model):
title = models.CharField(max_length=500)
writer = models.CharField(max_length=150,default='my dept')
category =models.CharField(max_length=150)
image = models.ImageField(upload_to='images')
post = models.TextField(max_length=2000)
Date = models.DateField( default=datetime.date.today)
def __str__(self):
return self.title
视图.py
from django.views.generic import ListView , DetailView , UpdateView
from.models import BlogPost
class BlogList(ListView):
model = BlogPost
template_name = 'blog/bloglist.html'
context_object_name = 'post'
def detailview(request, id=None): blg = get_object_or_404(BlogPost, id=id)
context = {'blg': blg,
}
return render(request, 'blog/blogdetail.html', context)
网址.py
from django.urls import path
# importing views from views..py
from .views import BlogList ,detailview
urlpatterns = [
path('list', BlogList.as_view(), name='list'),
path('(?P<id>\d+)/$', detailview, name='detail')
]
博客列表.html
<div class="post-body">
{% for p in posts %}
<a href="/blog/{{ p.id }}"><blockquote>{{p}}</br></br>{{p.Date}}</blockquote>
</a>
{% endfor %}
解决方案
您使用了错误的函数语法。path(...)
它应该是
from django.urls import path
from .views import BlogList, detailview
urlpatterns = [
path('list', BlogList.as_view(), name='list'),
path('<int:pk>/', detailview, name='detail')
^^^^^^^^^^^^^
]
推荐阅读
- c++ - 在现代 C++ 中使用模板替换函数指针数组
- react-native - Using Redux Reselect and PureComponent - Nothing updates
- c# - 如何在wpf中找到文本框的插入符号位置
- angular - How to change content with
on non-main page? - php-7 - In PHP7 how Replace thes code from preg_replace() to preg_replace_callback()
- r - 基于具有相同名称的数据框中添加列
- ansible - Ansible Shell/Command Module - "msg": "[Errno 2] No such file or directory",
- python - 通过串口发送位串
- python - Training lstm model?
- python - Slugify 一个线程链接并在 home.html 上创建它