#django #django-models #django-views
#django #django-модели #django-представления
Вопрос:
Итак, я работаю над некоторым 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'),
]
Как я могу добавить их вместе? Потому что я также хочу, чтобы переменные были доступны в моем шаблоне.
Комментарии:
1. Вы хотите объединить оба этих представления в одно?
2. Да или объединить их вместе в urls.py может быть? Но я не знаю как.
3. Создайте объект ArticleView в view_post. Этот способ может вам помочь
Ответ №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
Комментарии:
1. Как тогда переменные статей будут доступны в шаблоне?
2. Мой urls.py теперь выглядит примерно так:
urlpatterns = [ url(r'^news/(?P<slug>[^.] )', ArticleView.as_view() , name='view_blog_post'), ]
Это нормально, верно?3. Я нашел это
{{ post.object }}
, спасибо за решение, Нафис!