Python 当我点击一篇文章时,我需要它<&燃气轮机;它’;这篇文章的名字叫什么

Python 当我点击一篇文章时,我需要它<&燃气轮机;它’;这篇文章的名字叫什么,python,django,url,Python,Django,Url,我需要的是,当我点击一篇文章时,它被称为文章的名称 例如,现在,当我点击一篇文章时,我转到url地址news/1,但我需要的不是1,而是一个类似于此图片的名称。或者这里是另一个首映式,我称这篇文章为“如何逃学”,url地址将类似于此新闻/如何逃学 views.py class ArticleIndex(ListView): model = Articles template_name = 'news/posts.html' def ArticleDetailView(requ

我需要的是,当我点击一篇文章时,它被称为文章的名称

例如,现在,当我点击一篇文章时,我转到url地址news/1,但我需要的不是1,而是一个类似于此图片的名称。或者这里是另一个首映式,我称这篇文章为“如何逃学”,url地址将类似于此新闻/如何逃学

views.py

class ArticleIndex(ListView):
    model = Articles
    template_name = 'news/posts.html'

def ArticleDetailView(request, pk):

      tag=None
      Articles.objects.filter(pk=pk).update(view=F('view') + 1)
      Articles.objects.all()
      article_details = Articles.objects.filter(pk=pk).first()

      if request.method == 'POST':
          comment_form = Comments(request.POST)
          comment_form.save()
      else:
          comment_form = Comments()

      commentss = CommentModel.objects.all()

      return render(request, 'news/post.html', {'article_details': article_details,
                                                'comment_form': comment_form, 'comments': commentss,
                                                'tag': tag
                                                })
url.py

path('', ArticleIndex.as_view(), name='articles_list'),
path('<int:pk>/', views.ArticleDetailView, name='article_detail'),
这叫做鼻涕虫。您可以向模型中添加段塞,例如使用,但最好安装,并使用:

来自django.db导入模型的

从autoslug导入AutoSlugField
类别文章(models.Model):
title=models.CharField(最大长度=200)
slug=AutoSlugField(从class='title'填充_)
post=models.TextField()
日期=型号。日期时间字段()
img=models.ImageField(上传到='',默认值='',详细名称='kerkааиаиаа260а180')
tags=TaggableManager()
article\u like=models.IntegerField(默认值为0)
article\u=models.IntegerField(默认值为0)
view=models.IntegerField(默认值为0)
datesArticle=models.DateTimeField(auto\u now=True)
类元:
排序=['-datesArticle']
定义(自我):
返回自己的标题
您可以更改URL模式以解析段塞,如:

path('', ArticleIndex.as_view(), name='articles_list'),
path('<slug:slug>/', views.article_detail_view, name='article_detail'),
path(“”,ArticleIndex.as_view(),name='articles_list'),
路径(“/”,views.article\u detail\u view,name='article\u detail'),
在您看来,您可以使用以下方法处理段塞:

def ArticleDetailView(request, slug):
    tag=None
    Articles.objects.filter(slug=slug).update(view=F('view') + 1)
    article_details = Articles.objects.filter(slug=slug).first()
    if request.method == 'POST':
        comment_form = Comments(request.POST)
        if comment_form.is_valid():
            comment_form.save()
            return redirect('some-view-name')
    else:
        comment_form = Comments()
    comments = CommentModel.objects.all()
    return render(
        request,
        'news/post.html',
        {
           'article_details': article_details,
           'comment_form': comment_form,
           'comments': comments,
            'tag': tag
        }
    )
def articletailview(请求,slug):
标记=无
Articles.objects.filter(slug=slug).update(view=F('view')+1)
article\u details=Articles.objects.filter(slug=slug.first)()
如果request.method==“POST”:
评论形式=评论(request.POST)
如果注释形式有效():
注释\表单保存()
返回重定向('some-view-name')
其他:
注释形式=注释()
comments=CommentModel.objects.all()
返回渲染(
要求
“news/post.html”,
{
“文章详细信息”:文章详细信息,
“注释形式”:注释形式,
“评论”:评论,
“标记”:标记
}
)
请注意,您应该检查表单是否有效,如果成功,最好重定向到另一个视图,以实现。

这称为slug。您可以向模型中添加段塞,例如使用,但最好安装,并使用:

来自django.db导入模型的

从autoslug导入AutoSlugField
类别文章(models.Model):
title=models.CharField(最大长度=200)
slug=AutoSlugField(从class='title'填充_)
post=models.TextField()
日期=型号。日期时间字段()
img=models.ImageField(上传到='',默认值='',详细名称='kerkааиаиаа260а180')
tags=TaggableManager()
article\u like=models.IntegerField(默认值为0)
article\u=models.IntegerField(默认值为0)
view=models.IntegerField(默认值为0)
datesArticle=models.DateTimeField(auto\u now=True)
类元:
排序=['-datesArticle']
定义(自我):
返回自己的标题
您可以更改URL模式以解析段塞,如:

path('', ArticleIndex.as_view(), name='articles_list'),
path('<slug:slug>/', views.article_detail_view, name='article_detail'),
path(“”,ArticleIndex.as_view(),name='articles_list'),
路径(“/”,views.article\u detail\u view,name='article\u detail'),
在您看来,您可以使用以下方法处理段塞:

def ArticleDetailView(request, slug):
    tag=None
    Articles.objects.filter(slug=slug).update(view=F('view') + 1)
    article_details = Articles.objects.filter(slug=slug).first()
    if request.method == 'POST':
        comment_form = Comments(request.POST)
        if comment_form.is_valid():
            comment_form.save()
            return redirect('some-view-name')
    else:
        comment_form = Comments()
    comments = CommentModel.objects.all()
    return render(
        request,
        'news/post.html',
        {
           'article_details': article_details,
           'comment_form': comment_form,
           'comments': comments,
            'tag': tag
        }
    )
def articletailview(请求,slug):
标记=无
Articles.objects.filter(slug=slug).update(view=F('view')+1)
article\u details=Articles.objects.filter(slug=slug.first)()
如果request.method==“POST”:
评论形式=评论(request.POST)
如果注释形式有效():
注释\表单保存()
返回重定向('some-view-name')
其他:
注释形式=注释()
comments=CommentModel.objects.all()
返回渲染(
要求
“news/post.html”,
{
“文章详细信息”:文章详细信息,
“注释形式”:注释形式,
“评论”:评论,
“标记”:标记
}
)
请注意,您应该检查表单是否有效,如果成功,最好重定向到另一个视图,以实现。

这些称为“slug”-这些称为“slug”-