【发布时间】:2016-03-03 11:37:48
【问题描述】:
我目前正在通过一些培训来学习 Python / Django 堆栈以构建博客。
我目前有两个类似的视图用于添加新帖子和编辑现有帖子(post_new 和 post_edit),如下所示:
def post_new(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.save()
return redirect("post_detail", pk=post.pk)
else:
form = PostForm()
return render(request, "blog/post_edit.html", {"form": form})
def post_edit(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = PostForm(request.POST, instance=post)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.save()
return redirect("post_detail", pk=post.pk)
else:
form = PostForm(instance=post)
return render(request, "blog/post_edit.html", {"form":form})
尽管这些视图执行不同的工作,但它们共享一些相同的代码。
试图遵循最佳实践(DRY),有没有一种明智的方法可以使这种类似的观点变得 DRYer?还是将这种长度的视图保留为长格式以使其易于阅读更好?
【问题讨论】:
标签: python django python-3.x django-views dry