我是django的新手。 我不知道在纯粹的django中是否有可用的东西。
我的应用程序的主页面从数据库加载数据。
它在div
中输出信息,然后使用bootstrap来获得更好的外观。
在那个div我有图像和标题。
有没有办法让用户能够在views
之间切换,以便他们可以选择是否只有div
或table
只有标题?
我知道基于ajax的框架有类似的东西,但从未使用它们。
此外,我想在切换视图时保留模型中的数据,因为我想在切换视图时不要求db获取数据。
有可能吗?或者唯一的方法是制作单独的模板并为/ view /添加route
所以我将用户重定向到具有不同模板的不同页面,并将查看作为新页面处理(使用重新加载模型)
答案 0 :(得分:0)
我不确定这是一个好习惯,但如果你真的希望它在同一个html文件中:
使用Django模板LAnguage来评估哪个"查看"用户想要的。
修改您的html文件以将其包含在正文中。 首先,我们创建一个表单,我们向用户询问他想要的视图,然后我们使用上下文字典中的数据进行评估
<form role="form" id="view_form" method="post" action="<same url>">
<input type="radio" name="view" value="view1" checked> View #1 <br> <!-- this one will be checked by default -->
<input type="radio" name="view" value="view2"> View #2 <br>
<input type="radio" name="view" value="view3"> View #3 <br>
<button type="submit" name="submit">Change View</button>
</form>
{% if view == view1 %}
<!-- your code here -->
{% elif view == view2 %}
<!-- your code here -->
{% endif %}
修改views.py中的视图以捕获表单中的数据并将其添加到上下文字典中。
def page(request):
context_dict = {}
if request.method=='POST':
view = request.POST.get['view']
context_dict['view'] = str(view)
#The rest of your code here
....
但是我认为最好在视图函数中评估视图值并为每个值呈现不同的模板
def page(request):
# Your code first
view_value = None
if request.method=='POST':
view = request.POST.get['view']
if view = 'view1':
render(request, 'your_template.html', context_dict) # If you don't have a context, simply don't include it in this line
elif view = 'view2':
render(request, 'your_template2.html', context_dict)
... # All your other possible views
else:
render(request, 'default_template.html', context_dict) # If there's no match, load the default one.