Search code examples
pythondjangovieworm

how to assign a value to new user in django


i'm writing the logic in django where a newly created user would automatically get the free membership when they hit the signup button and i have tried diffrent solutions to fix this

views.py

def register(request):
    reviews = Review.objects.filter(status='published')
    info = Announcements.objects.all()
    categories = Category.objects.all()
    if request.method == "POST":
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            obj = request.user
            get_membership = Membership.objects.get(membership_type='Free')
            # error is showing "instance" is not access using visual studio code
            instance = UserMembership.objects.create(user=obj, membership=get_membership)

            messages.success(request, f'Account Successfully created for {username}! You can Login In Now')
            return redirect('userauths:login')
    elif request.user.is_authenticated:
            return redirect('elements:home')
    else:
        form = UserRegisterForm()
    context = {
        'reviews': reviews,
        'form': form,
        'info': info,
        'categories': categories
    }
    return render(request, 'userauths/register.html', context)

Solution

  • indentation error here:

    elif request.user.is_authenticated:
            return redirect('elements:home')
    else:
        form = UserRegisterForm()
    
    

    You only need to tab once. Not twice.

    elif request.user.is_authenticated:
        return redirect('elements:home') 
    else:
        form = UserRegisterForm()