首页 > 解决方案 > 如何在具有以下条件的模板中获取用户名,请告诉我?

问题描述

我想知道我在下面的代码中没有发现错误,如果在 e.html 中有其他内容,谁能告诉我如何在下面的代码中获取用户的用户名。我的情况似乎不起作用/.................................................. ..................................................... ............

e.html
        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            {% if request.user  %}
        <a class="navbar-brand" href="">Welcome{{request.user}}</a>
{% else %}
  <a class="navbar-brand" href="">no</a>
{% endif %}

        </a>

views.py
def registration_view(request):
    # if this is a POST request we need to process the form data
    template = 'home/login.html'

    if request.method == 'POST':
        print("post")
        # create a form instance and populate it with data from the request:
        form = RegisterForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            print("okk valid")
            if User.objects.filter(username=form.cleaned_data['username']).exists():
                messages.error(request,'Username already exists')
                return render(request, template, {
                    'form': form,
                    'error_message': 'Username already exists.'
                })
            elif User.objects.filter(email=form.cleaned_data['email']).exists():
                messages.error(request,'Email already exists')
                return render(request, template, {
                    'form': form,
                    'error_message': 'Email already exists.'
                })
            elif form.cleaned_data['password'] != form.cleaned_data['password_repeat']:
                messages.error(request,'Password do not match ')
                return render(request, template, {
                    'form': form,
                    'error_message': 'Passwords do not match.'
                })
            else:
                # Create the user:
                user = User.objects.create_user(
                    form.cleaned_data['username'],
                    form.cleaned_data['email'],
                    form.cleaned_data['password']
                )
                user.first_name = form.cleaned_data['first_name']
                user.last_name = form.cleaned_data['last_name']
                # user.date = form.cleaned_data['date']
                print("save reached")
                user.save()
                # Login the user
                login(request, user)
                messages.success(request,"Created your account succcessfully in thumbsapp ")
                return redirect('home')
处理登录功能

def handlelogin(request): if request.method == 'POST':

    loginusername = request.POST.get('username','')
    loginpassword = request.POST.get('password','')
    userr = authenticate(username=loginusername, password=loginpassword)
    # post = User.objects.filter(username=loginusername,password=loginpassword)
    if userr is not None:
        login(request,userr)       
        return redirect('post')
        return render(request,'user_homeview')
        return HttpResponse('logged in')

    else:
        messages.error(request, "Invalid credintials your Username or Password incorrect! ")
        return render(request, 'home/login.html')

标签: djangodjango-formsdjango-templatesdjango-template-filters

解决方案


您可以使用模型表单。而且您不需要检查用户名或电子邮件是否存在,只需添加到您的模型中:

     unique=True.

使用 modelform 添加新用户:

   form.save()

推荐阅读