我在处理子弹时遇到了麻烦:我在管理面板中为每篇文章定义了不同的子弹,但是在我的网站上,如果我在应用程序的任何页面上键入任何随机的子弹(eg-fvrryybr,34,d4g5tg5),我进入views.py的文章功能的网页作为Django的初学者,我不知道该如何处理
____ view.py ___
def article(request,slug):
allarticles = Article.objects.all()
context = {'allarticles':allarticles}
return render(request,"news/Home/tnews/blog-single.html",context)
models.py
class Post(models.Model):
no = models.CharField(max_length=1000,primary_key=True)
title = models.CharField(max_length=100)
content = models.TextField()
cover = models.ImageField(upload_to='images/')
timeStamp = models.DateTimeField(blank=True)
slug = models.SlugField(null=False,unique=True)
def __str__(self):
return self.title
class Article(models.Model):
heading = models.CharField(max_length=1000)
player = models.CharField(max_length=100)
article = models.TextField()
source = models.CharField(max_length=50)
date = models.DateTimeField(blank=True)
image = models.ImageField(upload_to='images/')
def __str__(self):
return 'Article on '+ self.player
urls.py
path("<slug:slug>",views.article,name='article')
from django.shortcuts import get_object_or_404
def article(request,slug):
allarticles= get_object_or_404(Article, slug=slug)
context = {'allarticles':allarticles}
return render(request,"news/Home/tnews/blog-single.html",context)
和urls.py
path("<str:slug>",views.article,name='article')
和
class Article(models.Model):
heading = models.CharField(max_length=1000)
player = models.CharField(max_length=100)
article = models.TextField()
source = models.CharField(max_length=50)
date = models.DateTimeField(blank=True)
image = models.ImageField(upload_to='images/')
slug = models.SlugField(unique=True)
def __str__(self):
return 'Article on '+ self.player
将弹头添加到商品模型中
Class Article(models.Model):
slug = models.SlugField(unique=True)
from django.shortcuts import get_object_or_404
def article_detail(request, article):
article = get_object_or_404(Model_Name, slug=article)
context = {'article ': article}
return render(request,"news/Home/tnews/blog-single.html",context)
在urls.py中path('<slug:article>/", views.article_detail, name='detail'),
get_object_or_404是类似于get()函数的函数,如果存在则返回一个对象,如果不存在则返回404。
如果要在标签的模板集href属性中添加链接href="{% url 'article' article.slug %}"
另外,我认为您想获取文章的详细信息,因此可以像创建article_detail一样创建一个新函数并将变量传递给模板。