设置用户时在django视图中请求错误

Request error in django view when setting up user

我有一个应用程序可以让当前登录的用户创建一个 Person 对象。该人对象将当前登录的用户作为其所有者。 但是当我保存表格时它给了我以下错误

global name 'request' is not defined

我正在尝试使用 Django CreateView

来实现这一点

错误引用

Traceback:

File "C:\Users\BITSWI~1\Desktop\Maala\Maala\lib\site-packages\django\core\handlers\exception.py" in inner
  41.             response = get_response(request)

File "C:\Users\BITSWI~1\Desktop\Maala\Maala\lib\site-packages\django\core\handlers\base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "C:\Users\BITSWI~1\Desktop\Maala\Maala\lib\site-packages\django\core\handlers\base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Users\BITSWI~1\Desktop\Maala\Maala\lib\site-packages\django\views\generic\base.py" in view
  68.             return self.dispatch(request, *args, **kwargs)

File "C:\Users\BITSWI~1\Desktop\Maala\Maala\lib\site-packages\django\views\generic\base.py" in dispatch
  88.         return handler(request, *args, **kwargs)

File "C:\Users\BITSWI~1\Desktop\Maala\Maala\lib\site-packages\django\views\generic\edit.py" in post
  217.         return super(BaseCreateView, self).post(request, *args, **kwargs)

File "C:\Users\BITSWI~1\Desktop\Maala\Maala\lib\site-packages\django\views\generic\edit.py" in post
  183.             return self.form_valid(form)

File "C:\Users\Bitswits 3\Desktop\Maala\MaalaWeddings\userfiles\views.py" in form_valid
  120.         obj.user_relation = request.user

Exception Type: NameError at /Personadd/
Exception Value: global name 'request' is not defined

Views.py

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    from django.shortcuts import *
    from django.contrib.admin.views.decorators import staff_member_required
    from .forms import *
    from django.shortcuts import *
    from .models import *
    from django.contrib.auth.forms import *
    from django.http import *
    from datetime import *
    from django.contrib.auth import *
    from django.contrib.auth.decorators import login_required
    from django.contrib.auth.models import User
    from django.views.generic import CreateView, ListView, DetailView
    from django.views import generic
    from .models import *
    import requests


        class PersonCreate(CreateView):
            model = PersonData
            template_name = "userfiles/add-person.html"

            fields = [
                'person_first_name',
                'person_last_name',
                'person_address',
                'person_email',
                'person_contact_number',
                'person_members'             ]



            def form_valid(self, form):
                obj = form.save(commit=False)
                obj.user_relation = request.user
                obj.save()
                return HttpResponse("DONE")

models.py

class PersonData(models.Model):

    user_relation = models.ForeignKey(
        User, on_delete=models.CASCADE)

    person_first_name = models.CharField("First Name", max_length=25)

    person_last_name = models.CharField("last Name", max_length=25)

    person_address = models.CharField("Address", max_length=512)

    person_email = models.EmailField("Email", max_length=512)

    person_contact_number = models.PositiveIntegerField("Phone Number", blank=True, null=True)

    person_members = models.PositiveSmallIntegerField(
        "Family members", blank=True, null=True)

我无法理解为什么这个错误甚至首先发生,因为我认为 request 在 Django

中无处不在

以及您使用的是 Class Based View

您要使用的所有参数或变量都需要自己附加到它

所以,

obj.user_relation = self.request.user

self代表instance of the class。通过使用 “self” 关键字,我们可以访问 属性 方法 ]class。它将 属性 给定参数 绑定。