我正在深入研究django,但是遇到了一个我不确定如何解决的问题。我已经设法仅使用html和css创建一个弹出框,因此创建和更新表单都加载到一页上,并且我可以使用页面部分链接来访问它们。
我遇到的问题是,当我创建新帖子或更新帖子时,页面部分链接保留在URL中,并且弹出表单仍然可见。
我尝试将action="."
添加到表单中,但这似乎破坏了我的更新表单,并且停止了工作;它将重定向到我的列表视图,并使用填写了更新信息的创建表单。
我的views.py
def list_view(request):
block_query = Block.objects.all()
new_form_query = BlockForm(request.POST or None)
if request.method == 'POST':
if new_form_query.is_valid():
new_block = new_form_query.save()
new_form_query = BlockForm()
return redirect('bulkapp:one_view', slug_id=new_block.slug)
return render(request, 'bulkapp/list.html', {'block_list': block_query, 'new_form': new_form_query})
def single_view(request, slug_id):
single_block_query = get_object_or_404(Block, slug=slug_id)
new_form_query = BlockForm(request.POST or None)
update_form_query = BlockForm(request.POST or None, instance=single_block_query)
if request.method == 'POST':
if new_form_query.is_valid():
new_block = new_form_query.save()
new_form_query = BlockForm()
return redirect('bulkapp:one_block', slug_id=new_block.slug)
if update_form_query.is_valid():
update_form_query.save()
update_form_query = BlockForm()
return redirect('bulkapp:one_view', slug_id=slug_id)
return render(request, 'bulkapp/single.html', {'one_block': single_block_query, 'new_form': new_form_query, 'update_form': update_form_query})
我的urls.py
from django.urls import path
from .views import single_view, list_view
app_name = 'bulkapp'
urlpatterns = [
path('', list_view, name="all_blocks"),
path('<str:slug_id>', single_view, name="one_view"),
]
我的list.html
{% extends 'base.html' %}
{% block content %}
<h1>Bulk Test</h1>
{% for one_block in block_list %}
<h3> <a href="{{one_block.get_absolute_url}}">{{one_block.title}}</a></h3>
<p>{{one_block.content}}</p>
{% endfor %}
{% endblock %}
我的single.html
{% extends 'base.html' %}
{% block content %}
<h3>{{one_block.title}}</h3>
<p>{{one_block.content}}</p>
<p><a href="#{{one_block.slug}}">Edit</a></p>
<div id={{one_block.slug}} class="overlay">
{% include 'bulkapp/update.html' %}
</div>
{% endblock %}
我的update.html
<span class="close-popup">
<a class="close" href="">×</a>
</span>
<form class="form-container" method="POST">
{% csrf_token %}
{{update_form.as_p}}
<input type="submit" value="Edit">
</form>
我的create.html
<span class="close-popup">
<a class="close" href="">×</a>
</span>
<form class="form-container" method="POST">
{% csrf_token %}
{{new_form.as_p}}
<input type="submit" value="Submit">
</form>
我的base.html包含用于创建新帖子的功能,这里也是如此。
我的base.html
{% load static from staticfiles %}
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Bulk Test</title>
<link rel="stylesheet" href="{% static 'css/master.css' %}">
</head>
<body>
{% include 'admin.html' %}
{% block content %}
{% endblock %}
</body>
</html>
我的admin.html
<a href="#new-block">Add block</a>
<div id="new-block" class="overlay">
{% include 'bulkapp/create.html' %}
</div>
执行上述代码时没有错误,我只是想知道从表单重定向后是否可以清除页面部分链接。