Django all-auth app,如何修改/ account / profile页面以显示自定义视图

时间:2017-08-17 23:31:45

标签: django django-allauth

设置All-Auth应用程序后,当用户登录时,他会被重定向到:accounts/profile/页面,告诉我们该视图不存在。

我试图弄清楚要包含哪种内容,并决定允许用户更改其基本信息。

我有一个users应用,其中包含Teacher模型,其设置如下:

class Teacher(models.Model):
    user = models.ForeignKey(User, unique=True)
    rate = models.CharField(max_length=200)
    availability = models.BooleanField(default=False)
    verified = models.BooleanField(default=False)

我希望accounts/profile/页面显示包含此信息的表单。用户可以编辑这些字段,还可以编辑属于不同模型的名字,姓氏和电子邮件 - User

我似乎无法开始这项工作。当我为个人资料页面创建详细视图时,我收到错误消息:

  

未提供PK或SLUG

我希望Django更改当前用户信息,而不是基于URL中的主键。我需要自定义视图吗?我看了[其他解决方案1 但他们似乎正在使用私钥参数。

我需要的是一个工作视图功能,类似于(不工作):

def get_teacher_info(request):
    current_user = request.user
    teacher = get_object_or_404(Teacher, username=current_user.username)
    return render(request, 'account/profile.html', {
            'user':current_user,
            'teacher': teacher,
            'error_message': "The field is blank",
        })

并在accounts/urls.py我添加了:

url(r"^profile/$", views.get_teacher_info, name="account_profile"),

但是当我在html模板中调用{% teacher.rate %}之类的电话时,我得到: 第5行的块标记无效:' teacher.rate'。您是否忘记注册或加载此标记?

2 个答案:

答案 0 :(得分:0)

def get_teacher_info(request)函数和urls.py条目正在运行。看起来问题可能出在模板中。使用{{而不是{%tags。因此,请在模板中使用{{teacher.rate}}而非{%teacher.rate%}。

答案 1 :(得分:0)

登录后重定向到 /accounts/profile/ 是 Django 的默认行为。 django-allauth 使用与 Django 设置相同的默认行为。

现在如果你想修改这个默认的重定向 url 然后把它改成

LOGIN_REDIRECT_URL = '/custom/redirect-url'

重要说明:如果没有开头的 /,您将重定向到附加到当前 URL 的路径。您需要使用前导斜杠重定向到附加到域根目录的路径。 further details on it。简而言之,如果没有开始 /,您将得到

../login/callback/custom.redirect-url(附加到当前网址)