2017-11-27 5 views
0

私は自分自身にPythonを教えようとしています。私は私のcontroller.pyファイルに次のコードを持っている:Pythonはweb.pyを使って間違ったページをレンダリングします

import web 

urls = { 
    '/', 'home', 
    '/register', 'registerclick' 
} 

render = web.template.render("views/templates", base="MainLayout") 
app = web.application(urls, globals()) 

# Classes/Routes 

class home: 
    def GET(self): 
     return render.home() 

class registerclick: 
    def GET(self): 
     return render.register() 

if __name__ == "__main__": 
    app.run() 

そして、これは私のMainLayout.htmlのコードです:

$def with (page) 

$var css: static/css/bootstrap.css 
$var js1: static/js/jquery-3.1.0.min.js static/js/bootstrap.js   static/js/material.min.js static/js/ripple.min.js static/js/scripty.js 

<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>CodeWizard</title> 

    $if self.css: 
     $for style in self.css.split(): 
      <link rel="stylesheet" href="$style" /> 

</head> 

<body> 
    <div id="app"> 
     <div class="navbar navbar-info navbar-fixed-top"> 
      <div class="navbar-header"> 
       <a class="navbar-brand">CodeWizard</a> 
      </div> 
      <ul class="nav navbar-nav"> 
       <li> 
        <a class="waves-effect" href="/">Home Feed<div class="ripple-container"></div></a> 
       </li> 
       <li> 
        <a href="/discover">Discover<div class="ripple-container"></div></a> 
       </li> 
       <li> 
        <a href="/profile">Profile<div class="ripple-container"></div></a> 
       </li> 
       <li> 
        <a href="/settings">Settings<div class="ripple-container"></div></a> 
       </li> 
      </ul> 
      <div class="pull-right"> 
       <a href="/register" class="btn btn-raised btn-default waves-effect">Register</a>&nbsp;&nbsp; 
      </div> 
     </div> 
     <br /><br /> 
     $:page 
    </div> 

    $if self.js1: 
     $for script in self.js1.split(): 
      <script src="$script"></script> 

</body> 
</html> 

私は2つの追加ファイル(home.htmlを、持っているし、登録します。 html)、私はブートストラップを利用しています(しかし、それは私の問題とは関係ありません)。

私はアプリケーションを起動し、ブラウザを開いてurlとしてlocalhost:8080を入力すると、MainLayout.htmlがブラウザにロードされます(私が期待する)が、register.htmlの内容は$:pageにロードされ、どうしてか分かりません。

urlから2番目のエントリを削除し、controller.pyからregnsterclickクラスを削除すると、MainLayout.htmlページがロードされ、何も$:pageに読み込まれないように見えます。

register.htmlの内容が表示される理由は何ですか?どんな助けでも大歓迎です。

ありがとうございました。

+0

あなたがローカルホストでブラウザを開く:8080は、あなたがそのURLに対して定義されたものを持っていないとエラーが表示されなければなりません。おそらく8080で実行しているWebサーバーの「古い」バージョンがありますか?あなたが記述したその症状は、あなたのコードと一致しません。 – pbuck

答えて

1

urlsを中括弧で定義すると、順序付けられていないsetになりました。括弧を使用してtupleとしてurlsを定義する必要があります。

この答えは、それをうまく説明:https://stackoverflow.com/a/46633252/2150542

+0

中カッコをカッコに変更したところ、完全に機能しました!どうもありがとうございました。 –

関連する問題