2016-02-18 121 views
0

因此,這是我的代碼,並且我希望它重定向頁面,如果用戶不輸入任何內容,請按「添加」。我需要一些幫助 {%伸出「base.html文件」%}如何將頁面重定向到錯誤頁面

{% block content %} 

    <form> 
     <h2>Add a Food</h2> 
     <input type="text" name="food"> 
     {% if items %} 
      {% for item in items %} 
       <input type="hidden" name="food" value="{{item}}"> 
      {% endfor %} 
     {% endif %} 
     <button>Add</button> 

      <br> 
      <br> 

      <h2>Shopping List</h2> 
      <ul> 
       {% if items %} 
        {% for item in items %} 

       {% for item in items %} 
        <li>{{ item }}</li> 
       {% endfor %} 
        <h3>comments</h3> 
        {% for comement in item %} 
         <li>{{ comment }}</li> 
        {% endfor %} 
      </ul> 
    </form> 

    {% endblock %} 
+0

爲什麼你要重定向到一個錯誤頁面,而不是提醒用戶輸入內容? –

+0

啊,這是個不錯的主意!謝謝,但我想學習如何做到這一點 –

+0

只需設置一個ID到按鈕標籤並添加一個腳本,如$('#button')。click(function(){...})' –

回答

0

重定向不會真正走在HTML頁面的形式(如果你是發射HTML時,已經太晚了),但而不是在表單目標的HTTP處理程序中。也就是說,如果您的表單看起來像:

<form action="/form/submission" method="post"> 

...「/ form/submission」的處理程序將執行此重定向。也就是說,它會發出:

HTTP/1.1 303 See Other 
Location: http://your.server.com/path/to/error 

相反的:

HTTP/1.1 200 OK 
Content-Type: text/html 
... (content here) ... 

你如何在處理函數中執行,這將依賴於特定的服務器環境和框架。對於webapp2的和谷歌應用程序引擎,它會是這個樣子:

class PostHandler(webapp2.RequestHandler): 

    def post(self): 
     if missing_inputs(self.request): 
     self.response.redirect_to(new_location) 
     process_form_submission(self.request) 

但是,爲了提供更具體的幫助,我們需要知道服務器端技術。

也可以在客戶端執行「重定向」,方法是將包含指定給變量window.location.href的JavaScript;但是,如果您在JavaScript中進行了驗證,那麼在當前頁面上註釋錯誤(例如,顯示/顯示錶單上方的錯誤消息)會更有意義,而不是在用戶訪問完全不同的頁面時用JavaScript做這件事。