Django注册自定义网址

时间:2016-09-03 15:48:45

标签: python django django-registration

我使用django-registration(the app,HMAC)进行用户注册和登录。一切正常,但我希望在http://localhost:8000/处使用登录表单,而不是/ accounts / login /。什么是最干净的方法来实现这一目标?

当只是将表单从login.html复制到我的index.html文件时,它提供了主页面的视图,它(显然(?))不起作用。我正在使用django 1.9.6和django-registration 2.1。请注意,我没有在setting.py文件中的INSTALLED_APPS中“注册”,因为根据文档不需要。

这是我的login.html文件:

{% extends "mysite/base.html" %}
{% load i18n %}

{% block content %}
<form method="post" action=".">
  {% csrf_token %} 
  {{ form.as_p }}

  <input type="submit" value="{% trans 'Log in' %}" />
  <input type="hidden" name="next" value="{{next}}" />
</form>

<p>{% trans "Forgot password" %}? <a href="{% url 'auth_password_reset' %}">{% trans "Reset it" %}</a>!</p>
<p>{% trans "Not member" %}? <a href="{% url 'registration_register' %}">{% trans "Register" %}</a>!</p>
{% endblock %}

我的urls.py文件:

from django.conf.urls import include, url
from django.contrib import admin
from . import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views.index, name='index'),
    url(r'^accounts/', include('registration.backends.hmac.urls')),
    url(r'^groups/', include('groups.urls')), #my own app
]

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点,这实际上取决于您是否关心重定向以及您希望如何组织URL结构。

我会做这样的事情:

来自django.conf.urls import include,url 来自django.contrib import admin 来自。导入视图 表单registration.backends.hmac.views import login

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views.index, name='index'),
    url(r'^accounts/login$', RedirectView.as_view(url='/login'), name='got-to-lgoin') # You have several options for this, see below
    url(r'^accounts/', include('registration.backends.hmac.urls')),  
    url(r'^login/$, login, name='login'),
    url(r'^groups/', include('groups.urls')), #my own app
]

现在按照第二个登录URL,您可以将其从hmac.urls中删除,将其更改为重定向到/ login,创建一个新的自定义URL文件并包含该文件,或者执行我所做的操作并添加重定向视图

像我说的那样个人喜好。如果您要为除了/ login和/ logout之外的更多网址执行此操作,我只需创建一个单独的urls.py文件并包含该文件。它更干净。

希望这有帮助!