我在django做了一个网站,我想在主页上显示我最近的博客文章列表,在下面几个街区我想做一个简单的联系表单,博客和联系表单分开工作都很好,但是我想把它们放在同一个页面上(显然是在同一个网址上)。
网址views.py:
from .forms import NameForm
def get_name(request):
if request.method == 'POST':
form = NameForm(request.POST)
if form.is_valid():
return HttpResponseRedirect('/thanks/')
else:
form = NameForm()
return render(request, 'personal/index.html', {'form': form})
如果您想查看forms.py,请:
from django import forms
class NameForm(forms.Form):
your_name = forms.CharField(label='Your name', max_length=100)
我的主页www.example.com中的url模式urls.py是:
urlpatterns = [
url(r'^$', ListView.as_view(
queryset=Post.objects.all().order_by("-date")[:2],
template_name="personal/index.html")),
url(r'^$', views.get_name, name='contact'),
]
使用这个url模式,博客文章列表会完美地显示出来,但是联系表单不会显示出来,但是使用下面的url模式,联系表单会显示出来,但是博客文章不会显示出来。
urlpatterns = [
url(r'^$', views.get_name, name='contact'),
url(r'^$', ListView.as_view(
queryset=Post.objects.all().order_by("-date")[:2],
template_name="personal/index.html")),
]
我想让这两个内容显示在同一页。请帮助我。如果你需要任何更多的信息,然后一定告诉。
2条答案
按热度按时间zxlwwiss1#
同一个URL不能有多个视图。每个URL只能有一个视图。
在这种情况下,最简单的解决方法是更新
get_name
视图,使其包含模板上下文中的帖子。然后删除使用
ListView
的url模式,以便get_name
处理请求。dhxwm5r42#
虽然你不能直接这么做,但是你可以考虑在www.example.com中使用你的函数views.py来处理请求,当它从一个模型中得到一个post请求时,它只为相应的模型初始化表单。要实现这一点,你需要为你的按钮指定一个名称。见下面的代码-