页面未找到(404)错误发生我没有写网址

时间:2017-09-28 09:38:58

标签: javascript jquery python html django

我收到错误,找不到网页(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>

1 个答案:

答案 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