【发布时间】:2018-07-07 16:55:07
【问题描述】:
我使用 DJANGO 创建了一个简单的博客,views.py 中有三个类
views.py
def blog(request):
posts=blog.objects.filter(createddate__lte=timezone.now()).order_by('-createddate')
if request.method == "POST":
name = request.POST.get('name')
message = request.POST.get('message')
contact.objects.create(name=name message=message)
return render(request, 'base.html'{'posts':posts})
def blog_details(request,slug):
posts=blog..objects.filter(createddate__lte=timezone.now()).order_by('-createddate')
pos=get_object_or_404(app_descripts, slug_title=slug)
if request.method == "POST":
name = request.POST.get('name')
message = request.POST.get('message')
contact.objects.create(name=name message=message)
return render(request, 'blog_details.html'{'posts':posts,'pos':pos})
def about(request):
posts=blog..filter(createddate__lte=timezone.now()).order_by('-createddate')
if request.method == "POST":
name = request.POST.get('name')
message = request.POST.get('message')
contact.objects.create(name=name message=message)
return render(request, 'about.html'{'posts':posts})
在html中我使用这种方式是因为我有一些代码:
{% extends 'blog/base.html' %}
{% block content %}
.......................
{% endblock %}
在 base.html 块外的内容中,我有一个简单的包含,其中包含所有帖子的代码(
posts=blog..filter(createddate__lte=timezone.now()).order_by('-createddate'))。
但要查看所有页面(博客、博客详细信息、关于)中的帖子必须编写此代码(
posts=blog..filter(createddate__lte=timezone.now()).order_by('-createddate'))
在所有视图中都可以正常工作。 这发生在我的 html 联系表单中,因为内容不足。
如何避免在所有视图中执行相同的代码?
【问题讨论】:
-
确保您已导入模型类。例如
from .models import Blog, Contact。另外,请详细说明您的问题并修复您的格式,例如而不是blog.objects.filter. ...,你应该写Blog.objects.filter. ...。代码更正:contact.objects.create(name=name, message=message),return render(request, 'blog_details.html', {'posts':posts,'pos':pos}) -
您应该使用基于类的视图,它们会自动为您处理所有这些内容。
标签: python django python-2.7 django-views