注册后,我正尝试将用户重定向到其个人资料。我不知道网址应该如何,应该以与urls.py中相同的方式编写或修改吗?我读了一些文章,他们谈到使用反向惰性参数,但我不确定这是否可行。我当前的个人资料网址使用包含姓氏和姓氏的字段。
views.py
def addpatient(request):
form = SignUpForm(request.POST)
if form.is_valid():
user = form.save()
user.refresh_from_db()
user.profile.first_name = form.cleaned_data.get('first_name')
user.profile.last_name = form.cleaned_data.get('last_name')
user.is_active = True
user.save()
user.profile.id=pk
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password1')
messages.success(request, 'Account was created for ' + username)
user = authenticate(username=username, password=password)
login(request, user)
return redirect('profile/<str:slug>/<int:pk>')
else:
form = SignUpForm()
return render(request, 'core/signup.html', {'form': form})
models.py
class Profile(models.Model):
username = models.CharField(max_length=50, blank=True)
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
last_name = models.CharField(max_length=100, blank=True)
first_name = models.CharField(max_length=100, blank=True)
last_name = models.CharField(max_length=100, blank=True)
slug = models.SlugField(max_length=200,null=True)
def save(self, *args, **kwargs):
self.slug = slugify(f"{self.last_name}-{self.first_name}")
super(Profile, self).save(*args, **kwargs)
urls.py
urlpatterns = [
path('profile/', profile, name='profile'),
path('profile/<str:slug>/<int:pk>', profile, name='profilepk')
通过实际的值slug
,并pk
在您的重定向,它应该工作:
return redirect(f'/profile/{user.profile.slug}/{user.pk}')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句