我收到错误,找不到网页(404)
请求方法:GET
请求网址:http://localhost:8000/app/test.html?prop=value
。
我写了index.html
喜欢
<body>
<form method="post" action="">
<select id="mainDD" data-placeholder="Choose" class="chzn-select" style="width:600px;">
{% for i in json_data.items.values %}
<option value="{{forloop.counter}}">{{ i }}</option>
{% endfor %}
</select>
{% for key, values in preprocessed %}
<select name="type" id=type{{forloop.counter}}>
{% for counter, value in values %}
<option value="{{forloop.counter}}">{{ value }}</option>
{% endfor %}
</select>
{% endfor %}
</form>
<script type="text/javascript">
$(document).ready(function () {
$('#mainDD').on('change', function() {
var thisType = "type" + $(this).val();
for(i=1; i<6; i++) {
var thisId = "type" + i;
if(thisType !== thisId) {
$("#"+thisId).hide();
}
else {
$("#"+thisId).show();
}
}
}).trigger('change');
});
</script>
<form id="postform" action="http://localhost:8000/app/test_view" method="POST">
{% csrf_token %}
<input type="submit" value="SEND">
</form>
<script type="text/javascript">
let key = "prop";
let value = "value";
var array1 = [];
var array2 =[];
document.querySelector("input[type=submit]").onclick = e => {
const test = window.open(`test.html?${key}=${value}`, "_blank");
}
</script>
</body>
此部分const test = window.open('test.html?${key}=${value}', "_blank");
会导致错误,因为我没有注册网址http://localhost:8000/app/test.html?prop=value
。我只注册http://localhost:8000/app/test_view
。但我想送选择的i&amp;值为test.html的值,所以我写了这个。
我在test.html
写了
<body>
<h2>RESULT</h2>
<script type="text/javascript">
onload = () => {
document.body.appendChild(
document.createTextNode([...new URLSearchParams(location.search).entries()])
);
}
</script>
</body>
我该如何解决这个问题?我该怎么写呢?
urls.py
是
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^test_view$', views.test_view, name='test_view'),
]
views.py是
def test_view(request):
return render(request, 'test.html')
我的应用结构是 testapp(父app) -app(儿童应用) -inde.html&安培;&的test.html放大器; views.py
testapp的urls.py
是
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^app/', include('app.urls')),
]
现在我的代码是
<form id="postform" action="http://localhost:8000/app/test_view" method="GET">
{% csrf_token %}
<a href={% url 'test_view' %}>Your link to test view</a>
</form>
<script type="text/javascript">
let key = "prop";
let value = "value";
var array1 = [];
var array2 =[];
document.querySelector("input[type=submit]").onclick = e => {
const test = window.open(`test.html?${key}=${value}`, "_blank");
}
</script>
答案 0 :(得分:0)
您已注册http://localhost:8000/app/test_html
但请尝试使用http://localhost:8000/app/test.html
链接。您的GET
参数没有意义。
您应该使用您在urls.py
注册的网址
阅读此tutorial有关观看次数和网址的信息。
更改表单中的action
属性。它看起来可能是这样的:
在您的模板中,您的链接可能如下所示:
<form id="postform" action="{% url 'test_view' %}" method="GET">
或:
<form id="postform" action="app/test_view" method="GET">
而不是:
<form id="postform" action="http://localhost:8000/app/test_view" method="POST">
这是因为在action
或您添加网址的其他地方,当您在本地计算机上开发时,您应该编写没有域的网址路径:
app/test_view
代替http://localhost:8000/app/test_view