2016-05-19 6 views
0

私はDjangoを初めて使っていて、どのように動作するかを学んでいます。きれいなWebアプリケーションが立ち上がり、django_registrationプラグインで遊んでいました。私は混乱の事はテンプレートがルートサイト/登録に住んでいると私は、このようなURLからアクセスできることです。django_registration URLとルーティングの混乱

<a href="{% url 'registration_register' %}"> 

、だから、私は、登録のすべてのためにそれを行うことができると思ったが、それはそうではなかったですこのように動作しません:それは程度動作するもの、および他のではない(私は一種のレールの背景から来て、私はそこにルートを見ることができる)私は問題を抱えています。この一つです

<a href="{% url 'registration_login' %}"> 

混乱何学んで、これは私のアプリのいくつかのURLがmysiteを使用する理由を通過した後でした:(私が得ると思う)セミコロンとの投票など ちょうど混乱してアプリネームスペースの下に住んでいないものが話すことになります。

また、私は実際にregistration_loginを実行して、テンプレートの設定やurls.pyなどの何かを間違っていましたか?ちょうど背景を取得しようとしています。

答えて

1

編集:ちょうどそれがあなたに問題を与えていたlogin URLであることを見ました。私は、他のセクションについては、それが有用である場合に備えて、今後のリファレンスのためにregistration_registerについて残しておきます。

hereを配置され、命名されたログイン用のURL auth_login

registration_registerビット:

はあなたのsettings.pyファイルでFalseにINCLUDE_REGISTER_URLを設定しましたか?

here位置のURLのソースをチェックして、あなたは{%「をregistration_login」%のURL}のようなものを使用する場合、あなたが参照している、ジャンゴでは次のスニペットに

if getattr(settings, 'INCLUDE_REGISTER_URL', True): #Defaults to True 
    urlpatterns += [ 
     url(r'^register/$', 
      RegistrationView.as_view(), 
      name='registration_register'), 
    ] 
1

が表示されます指定したアプリのurlsファイルのルート。 URLルートがname = registration_loginの場合、これはうまくいきます。

テンプレートにアクセスする方法だと言われましたが、テンプレートではなくURLに経路を指定するだけです。ルートは、ロードするビューを指定し、使用するテンプレートHTMlファイルを設定します。

したがって、上記の例では、そのアプリのURLファイル(またはドキュメント)を見て、彼らが{%url%}を使用するルート名を確認する必要があります。名前が与えられていない場合は、他のアンカータグと同じように、実際のURL「/ login /」(またはそのようなもの)を使用する必要があります。

あなたが使用しているdjango_registrationアプリはわかりませんが、Djangoには付属のdjango.contrib.authが付属しています。 URLファイルには、ログインURLルートの名前が "login"であるので、{%url "login"%}を使用することができます。

は、より多くの情報のため、このためのドキュメントを見てみましょう:https://docs.djangoproject.com/en/1.9/topics/auth/default/

ああ、いくつかのケースで参照名前空間に関するご質問、(すなわち、個人用サイト:世論調査):このは、URLに設定されたものですapp_nameのファイル。したがって、世論調査アプリケーションがurls.pyにapp_name = pollsを持つ場合、たとえば{%url 'polls:vote'%}と答えることができます。多くのアプリを使用している場合は使い方が良いですが、これはDjangoの完全なサイトのほとんどの場合です。

{%のURL%}テンプレートタグは、あなたのURLが変更された場合は、あなたのサイト全体であなたのリンクを変更する必要がないので使用が良いです。しかし、上記のように、標準のHTMLアンカーhrefのように、URLを直接参照することができます。 {%url%}を使用する必要はありません。

詳細については、https://docs.djangoproject.com/en/1.9/topics/http/urls/

をご覧ください。