【发布时间】:2014-02-01 20:17:35
【问题描述】:
我试图在同一页面上同时显示两个不同的视图。如果我注释掉 user_creation url,则将显示 userlist 视图。否则,如果两个 url 都未注释,则首先列出的 url 将指示哪个视图可见(在本例中为 user_creation)。
如何在同一页面上同时显示两个视图?
(PS:我是 Django 初学者)
编辑:由于我不能有两种观点,我将描述我的目标。我正在尝试显示:
- 用户可以输入信息以创建用户的表单,并且
- 已创建的用户列表。随着使用表单输入创建新用户,用户列表(显示在某处,并不真正关心其视觉布局的位置或方式)将更新以显示所有用户,包括新创建的用户。
同样,我显示的代码分别适用于每个目的,但我不能同时显示两个部分/模块。
urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^$', 'users.views.user_creation', name='user_creation'),
url(r'^$', 'users.views.userlist', name='userlist'),
url(r'^admin/', include(admin.site.urls)),
)
views.py
from django.shortcuts import render_to_response, RequestContext
from django.http import HttpResponseRedirect
from users.models import User
from users.forms import UserForm
def user_creation(request):
form = UserForm(request.POST or None)
if form.is_valid():
save_it = form.save(commit=False)
save_it.save()
return HttpResponseRedirect('/')
return render_to_response("users/base.html",
locals(),
context_instance=RequestContext(request))
def userlist(request):
return render_to_response("users/userlist.html",
{'users': User.objects.all()})
base.html
<html>
<body>
<h1>User Management</h1><br>
<form method='POST' action=''> {% csrf_token %}
{{ form.as_p }}
<input type='submit' value="Create">
</form>
<!--userlist.html block-->
{% block userlist_block %}
{% endblock %}
</body>
</html>
userlist.html
{% extends "users/base.html" %}
{% block userlist_block %}
{% for user in users %}
{{ user.name_first }} {{ ' ' }}
{{ user.name_last }} {{ '; ' }}
{{ user.email_1 }}</li>
{% endfor %}
{% endblock %}
【问题讨论】:
-
不能同时显示两个视图。
-
你不能那样做。但是您可以编写一个视图并决定要使用哪个上下文渲染哪个模板。告诉我们你到底想做什么?
-
@FallenAngel - 查看对 OP 的编辑。
标签: django django-views