【问题标题】:How can I add template view and the slug defining into one view?如何将模板视图和 slug 定义添加到一个视图中?
【发布时间】:2019-04-14 06:17:43
【问题描述】:

所以我正在研究一些 Django,但对它来说有点新。我有这段代码:

from django.shortcuts import render, render_to_response, get_object_or_404
from .models import Article
from django.views.generic import TemplateView

def view_post(request, slug):
    return render_to_response('news/article.html', {'post': get_object_or_404(Article, slug=slug)})

class ArticleView(TemplateView):
    template_name = "news/article.html"
    def get(self, request):
        article = Article.objects.all()
        return render(request, self.template_name ,{'article': article })

如何将其写入一个视图,以便在我的 urls.py 中使用它?

现在这是我的 urls.py:

from django.conf.urls import url, include
from .views import view_post

urlpatterns = [
    url(r'^blog/view/(?P<slug>[^\.]+)', view_post , name='view_blog_post'),
]

如何将它们加在一起?因为我还希望变量在我的模板中可用。

【问题讨论】:

  • 您想将这两个视图合并为一个吗?
  • 是的,或者将它们合并到 urls.py 中?但我不知道怎么做。
  • 在 view_post 中创建一个 ArticleView 的对象。这种方式可能对您有所帮助

标签: django django-models django-views


【解决方案1】:

我想这就是你想要的。

class ArticleView(DetailView):
    query_pk_and_slug = 'slug'
    template_name = 'news/article.html'
    context_object_name = 'post'
    model = Article

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['article'] = Article.objects.all()
        return context

【讨论】:

  • 那么文章的变量如何在模板中可用?
  • 我的 urls.py 现在看起来像这样:urlpatterns = [ url(r'^news/(?P&lt;slug&gt;[^\.]+)', ArticleView.as_view() , name='view_blog_post'), ] 可以吗?
  • 啊找到了 {{ post.object }} 感谢 Nafees 的解决方案!
猜你喜欢
  • 1970-01-01
  • 2022-07-10
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
相关资源
最近更新 更多