重定向后从url清除页面部分链接

时间:2019-08-29 06:29:52

标签: django

我正在深入研究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="">&times</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="">&times</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>

执行上述代码时没有错误,我只是想知道从表单重定向后是否可以清除页面部分链接。

0 个答案:

没有答案