无法使用&#34创建自定义身份验证模型;如果user.is_authenicated"在HTML中

时间:2017-05-29 12:47:30

标签: django django-authentication

您好我正在尝试在我的html文件中创建一个注册链接。但它只在我已经登录时才有效。

settings.py

AUTH_USER_MODEL = 'users.User'

models.py

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.urls import reverse_lazy

class User(AbstractUser):
    # Address
    plz = models.CharField(max_length=5)
    ort = models.CharField(max_length=30)
    strasse = models.CharField(max_length=30)
    strnr = models.CharField(max_length=5)
    # Kontakt
    mobil = models.CharField(max_length=20)

forms.py

我自定义了原始UserCreationForm以实现其他字段:

class UserCreate(forms.ModelForm):
    --snip--
    class Meta:
        model = User
        fields = ('username', 'password1', 'password2', 'first_name', 
                  'last_name', 'email', 'mobil', 'plz', 'ort', 
                  'strasse', 'strnr',)

views.py

class UserCreate(CreateView):
    model = User
    form_class = UserCreate
    template_url_suffix = '_create_form'

    def get_context_data(self, **kwargs):
        context = super(UserCreate, self).get_context_data(**kwargs)
        context['head'] = 'Account erstellen'
        return context

urls.py

url(r'^user/create/$', views.UserCreate.as_view(), name='user-create'),

如果我已登录,我可以使用该链接创建用户实例:

base.html文件

 <body>
   <ul>
     <li><a href="{% url 'users:home' %}">Home</a></li>
     <li><a href="{% url 'users:user-create' %}">register</a></li>
     {% if user.is_authenticated %}
       <li><a href="{% url 'users:user-detail' user.id %}">Account</a></li>
       {% if user.sportler %}
         <li><a href="{% url 'users:sportler-detail' user.sportler.id %}">Sportler</a></li>
       {% else %}
         <li><a href="{% url 'users:sportler-create' %}">Sportler werden</a></li>
       {% endif %}
 ....

  

如果没有登录,我怎样才能使它工作?

     

错误:反向用户详细信息&#39;有参数&#39;(无,)&#39;未找到。尝试了1种模式:[&#39;用户/(?P [0-9] +)/详细信息/ $&#39;]

1 个答案:

答案 0 :(得分:0)

我的创作表单中有一个反向链接。叫我morron。

<a href="{% url 'users:user-detail' user.id %}"><button>Zurück</button></a>

将其编辑为<a href="{% url 'users:home' %}"><button>Zurück</button></a>并且有效......