python - 发布 JSON 数据后,Django 重定向不起作用
问题描述
接收到 json 数据后,返回重定向在 else 语句中不起作用。相同的重定向适用于另一个 if 语句。在终端中,我可以看到我想要重定向到的 url 的 GET 请求,这就是为什么我觉得这很奇怪。打印语句在 else 中完美运行,只有重定向失败。到目前为止我的代码:
views.py (如果需要其他观点来回答问题,请告诉我)
def data_type_error_handling(request):
'''handles all the possible choices after data_type_errors '''
if '_skip' in request.POST:
return redirect('data_validation')
elif 'first_load' in request.session or '_refresh' in request.POST or request.method == 'GET':
print("data_load vagy refresh")
error_list = request.session['error_list']
errors = json.dumps(error_list, indent=4, sort_keys=True, default=str)
if 'first_load' in request.session:
del request.session['first_load']
return render(request, "upload/data-type-correction.html",
{"error_list": errors})
else:
raw_data = request.body.decode('utf-8')
data = json.loads(raw_data)
print(data)
return redirect('data_validation')
def data_validation(request):
return render(request, "upload/data-validation.html")
return redirect('data_validation') 在第一个 if 语句中有效,但在 else 中无效,它停留在我单击按钮的同一页面上。
网址.py
from django.urls import path
from . import views
urlpatterns=[
path('data-upload', views.data_upload, name='data-upload'),
path('upload-failed', views.data_upload, name='upload-failed'),
path('upload-successful', views.data_upload, name='upload-successful'),
path('data-type-correction', views.data_type_error_handling, name ='data-type-correction'),
path('data-validation', views.data_validation, name ='data_validation'),
]
数据类型更正.html
{% extends "base.html" %}
{% block title %} Data type error correction {% endblock title %}
{% block content %}
<h1>Data type errors</h1>
<h3 id="data-type-error-h3">There are data type errors in your submission. Please change string characters to numbers in the Amount column.</h3>
<input type="submit" class="btn-back-correct" id="btn-back-to-upload" value="Back" onclick="history.go(-1)" />
<div id="main-container">
<button type="submit" class="btn-submit-correct" id="btn-repost-data-errors" name="_reload">Load corrected data</button>
<div id="datatype-error-container"></div>
<form action="" method="post">
<ul id="datatype-action-container">
{%csrf_token%}
<li><input type="submit" class="btn-submit-correct" id="btn-dismiss-data-errors" value="Skip this data" name="_skip" onclick="return confirm('Are you sure you do not need this data?');"></li>
<li><input type="submit" class="btn-submit-correct" id="btn-refresh-data-errors" value="Refresh error list" name="_refresh"></li>
</ul>
</form>
<!--handsontable-->
<script>
var errors = {{ error_list|safe }}
console.log(errors)
function log (event) {console.log(event)}
var container = document.getElementById('datatype-error-container');
var settings = {
data: errors,
rowHeaders: true,
colHeaders: true,
filters: true,
dropdownMenu: true,
contextMenu: true,
width: '75.66%',
height: 500,
minRows: 1,
afterChange: log.bind(this, 'afterChange'),
afterRemoveRow: log.bind(this, 'removeRow'),
afterRemoveCol: log.bind(this, 'removeCol'),
afterCreateRow: log.bind(this, 'createRow'),
afterCreateCol: log.bind(this, 'createCol'),
columns: [
{
data: 0,
type: 'text',
width: 210,
allowInsertRow: true
},
{
data: 1,
width: 210,
type: 'text',
},
{
data: 2,
width: 210,
type: 'text',
},
{
data: 3,
width: 210,
},
],
licenseKey: 'non-commercial-and-evaluation',
colHeaders: [
'CID',
'Product',
'Account',
'Amount'
]
};
var hot = new Handsontable(container, settings);
</script>
<script src="../../static/app/scripts/fetchData.js"></script>
</div>
{% endblock content %}
数据验证.html
{% extends "base.html" %}
{% block title %} Data validation {% endblock title %}
{% block content %}
<h1>Data validation output goes here</h1>
{% endblock content %}
解决方案
推荐阅读
- c++ - 变量未在 switch case 语句中定义
- java - 保留空间并反转 string_explain logic_Else 任何其他优化代码
- android - W/ActivityThread:handleWindowVisibility:令牌 android.os.BinderProxy@6c3e2b4 没有活动
- grpc-web - gRPC 客户端以数组形式接收内容
- unix - 我在脚本中有一个函数,但我找不到是谁在调用它
- android - 如何在junit测试期间清除静态方法状态
- android - Android TV 播放器在 PlaybackTransportRowPresenter.createRowViewHolder 上充气错误
- vba - VBA 字。如何在Word表格中找到第一个空单元格?
- javascript - 如果更改原始文件,如何在 JS 中复制重复更改的对象
- sql - 基于两列查找重复项的查询