J'ai ce code dans view.py

def room(request, room_name):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            raw_password = form.cleaned_data.get('password1')
            user = authenticate(username=username, password=raw_password)
            login(request, user)
            return redirect('<str:room_name>/')
    else:
        form = UserCreationForm()

enter image description here

Et c'est mon url.py

path('<str:room_name>/', views.room, name='room'),

enter image description here

Comment charger la même page après l'inscription en utilisant Django

-1
user12290120 14 févr. 2020 à 08:22

1 réponse

Meilleure réponse

Vous devez passer une URL à la fonction redirect. Vous pouvez transmettre le chemin actuel à redirect en utilisant request.path :

def room(request, room_name):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            raw_password = form.cleaned_data.get('password1')
            user = authenticate(username=username, password=raw_password)
            login(request, user)
            return redirect(request.path)
    else:
        form = UserCreationForm()
        # return http response for get request.
        return render(request, 'some_template.html', {})

Pour en savoir plus : docs Django sur HttpRequest et < a href="https://docs.djangoproject.com/en/3.0/topics/http/shortcuts/#redirect" rel="nofollow noreferrer">redirection.

0
Nalin Dobhal 14 févr. 2020 à 05:50