Ошибка запроса в представлении django при настройке пользователя - PullRequest
0 голосов
/ 19 июня 2019

У меня есть приложение, которое позволяет вошедшему в систему пользователю создавать объект Person.Этот объект 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

1 Ответ

1 голос
/ 19 июня 2019

так же, как вы используете Class Based View

все параметры или переменные, которые вы хотите использовать, должны быть присоединены к нему самостоятельно

т.,

obj.user_relation = self.request.user

self представляет instance of the class. Используя ключевое слово «self» , мы можем получить доступ к атрибутам и класса . Он связывает атрибуты с данными аргументами .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...