2017-09-07 7 views
0

J'écris un petit cadre qui permettra aux utilisateurs de se connecter au site, mais seulement après avoir cliqué sur un bouton de la page d'accueil. J'ai deux fichiers HTML, site_main_page.html et login.html, avec mon fichier Python principal.Problème pour rediriger l'utilisateur vers une nouvelle page HTML Python Bottle

site_main_page.html:

<html> 
<body> 
    <button onclick="toLogin()">Login</button> 
    <script> 
    function toLogin() 
    { 
    window.location = "login.html"; 

    } 
    </script> 
</body> 
</html> 

login.html:

<html> 
    <body> 
    <form action="/login" method="post"> 
     Username: <input name="username" type="text" /> 
     Password: <input name="password" type="long" /> 
     <input value="Login" type="submit" /> 
    </form> 
</body> 
</html> 

fichier Python:

from bottle import route, run, template, static_file, request, redirect 
import urllib 
import re 
import sqlite3 

@route('/') 
def main_page(): 
    return open('site_main_page.html').read() 

@route('/login', method='POST') 
def user_login(): 
    username = request.forms.get('username') 
    password = request.forms.get('password') 
    conn = sqlite3.connect("/site_users") 
    cursor = conn.cursor() 
    the_data = list(cursor.execute('SELECT username, password from users')) 
    if username in the_data: 
     return redirect("/") 
    else: 
     return "<p>credentials invalid </p>" 

run(host="127.0.0.1", port=8000, debug = True) 

Actuellement, quand je lance le principal fichier python et cliquez sur le "Login" bouton, au lieu d'être dirigé à login.html, je reçois le message:

Error: 404 Not Found 
Not found: '/login.html' 

Est-ce que quelqu'un sait comment ce problème peut être résolu?

Répondre

1

Je pense que vous devez créer un itinéraire qui retourne votre login.html

function toLogin() 
{ 
    window.location.assign(window.location.origin + "/login"); 

} 

python:

@route('/login') 
def login_page(): 
    return open('login.html').read() 

@route('/submitLoginForm', method='POST') 
def user_login(): 
    username = request.forms.get('username') 
    password = request.forms.get('password') 
    conn = sqlite3.connect("/site_users") 
    cursor = conn.cursor() 
    the_data = list(cursor.execute('SELECT username, password from users')) 
    if username in the_data: 
     return redirect("/") 
    else: 
     return "<p>credentials invalid </p>" 

login.html

<html> 
    <body> 
    <form action="/submitLoginForm" method="post"> 
     Username: <input name="username" type="text" /> 
     Password: <input name="password" type="long" /> 
     <input value="Login" type="submit" /> 
    </form> 
</body> 
</html> 
+0

Merci pour votre réponse. Cependant, lorsque j'ai essayé de réexécuter le script, j'ai quand même reçu le message d'erreur d'origine '404'. Y a-t-il un code que je dois changer dans mes autres fichiers? – Ajax1234

+0

Avez-vous un chemin sur votre serveur qui retourne login.html? –

+0

Actuellement, je n'ai que le décorateur '@route ('/ login', method = 'POST')'. – Ajax1234