Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 注册和登录后重定向_Django_Django Models_Django Views_Django Templates - Fatal编程技术网

Django 注册和登录后重定向

Django 注册和登录后重定向,django,django-models,django-views,django-templates,Django,Django Models,Django Views,Django Templates,我正在尝试建立一个网站来学习django。该网站基于django的默认系统进行注册。默认django的模型用户与我的自定义模型配置文件OneToOne关系相关,以添加所需字段,如名称、姓氏、首字母缩写、照片和个人简历。用户可以在他们的页面上填写和更改这些字段。此外,每个用户都有创建默认get_absolute_URL方法的URL。如何设置注册后重定向到URL用户的?我试过这个: models.py class Profile(models.Model): """ T

我正在尝试建立一个网站来学习django。该网站基于django的默认系统进行注册。默认django的模型用户与我的自定义模型配置文件OneToOne关系相关,以添加所需字段,如名称、姓氏、首字母缩写、照片和个人简历。用户可以在他们的页面上填写和更改这些字段。此外,每个用户都有创建默认get_absolute_URL方法的URL。如何设置注册后重定向到URL用户的?我试过这个:

models.py

class Profile(models.Model):
"""
This model represents profile each user 
including those registred by OAuth system.
"""
user = models.OneToOneField(User, verbose_name='Профиль пользователя', on_delete=models.CASCADE)
first_name = models.CharField('Имя', max_length=200)
last_name = models.CharField('Фамилия', max_length=200)
patronymic = models.CharField('Отчество', max_length=200, blank=True)
profile_picture = models.ImageField(upload_to='profile_pictures/%Y/%m/%d/', verbose_name='Аватар', default='avatar.png')
bio = models.TextField('Информация о себе', blank=True)

def __str__(self):
    return f'Профиль пользователя: {self.first_name} {self.last_name}'

def get_absolute_url(self):
    return reverse('profile_detail', kwargs={"pk": self.pk})

class Meta:
    verbose_name = 'Профиль' 
    verbose_name_plural = 'Профили'
    ordering = ['last_name']
view.py

    class ProfileList(ListView):
    model = Profile
    template_name = 'profiles/profile_list.html'
    context_object_name = 'profiles'
    paginate_by = 10


class ProfileView(DetailView):
    model = Profile
    context_object_name = 'profile'
    template_name = 'profiles/profile_detail.html'


class ProfileUpdate(UpdateView):
    model = Profile
    fields = ['first_name', 'last_name', 'patronymic', 'profile_picture', 'bio']
    template_name = 'profiles/profile_form.html'
    success_url = ''
url.py

urlpatterns = [
    path('', ProfileList.as_view(), name='profiles_list'),
    path('<int:pk>/', ProfileView.as_view(), name='profile_detail'),
    path('edit/<int:pk>/', ProfileUpdate.as_view(), name='profile_form'),
    path('social-auth/', include('social_django.urls', namespace='social')),
]
可以在传递视图名称、位置参数和命名参数的位置使用,以便:

return redirect('profile_detail', pk=profile.pk)

你没有在你的
注册功能中创建
配置文件
?首先我创建了这个网站,然后我决定添加用户页面,我认为最好使用配置文件将注册转移到应用程序,但我想首先了解如何在授权后请求重定向请求到何处?您重定向到
profile\u detail
,但如果没有
profile
,则没有显示详细信息的项目。是的,您是对的,我只是想显示我要重定向的位置,它类似于返回重定向('profile\u detail/USER\u PK'),但我无法执行
返回重定向('profile\u detail',PK=USER.PK)
,但这是用户主键,而不是配置文件的主键,因此它将(很可能)重定向到“错误”的配置文件。
return redirect('profile_detail', pk=profile.pk)
return redirect('profile_detail', pk=user.profile.pk)