我使用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')
)。
但要查看所有页面中的帖子(blog,blog_details,about)必须编写此代码(
posts=blog..filter(createddate__lte=timezone.now()).order_by('-createddate')
)
在所有视图中都能正常工作。 发生的事情和我的html联系表格因为内容不足。
如何避免在所有视图中执行相同的代码?
答案 0 :(得分:1)
我建议你在另一个函数中编写重复代码,并从你需要它的每个视图中调用它。
def get_posts():
# Here you write your repeated code
从你的观点中调用它
def my_view(request):
posts = get_posts()
return render(request, 'template.html', {'posts': posts})