尝试写入数据库时​​出错Django

时间:2017-03-25 17:38:23

标签: django python-2.7 django-models

我仍在通过Django学习Python,并且在视图中一直在做我的大部分方法。有人告诉我,最好将它们放在管理员的模型中。我有以下代码抓住产品信息,我相信id填充我的模型。但它抛出一个错误。任何帮助都会很棒。

将内容移入模型后更新错误。现在它没有对request.session进行重新命名

Traceback:

File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\core\handlers\exception.py" in inner
  42.             response = get_response(request)

File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\core\handlers\base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\core\handlers\base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Users\dbhol\Desktop\blackbelttest ver 1\blackbelttest\apps\blackbeltapp\views.py" in create
  43.   viewsResponse = Myblackbelt.objects.add_product(request.POST)

File "C:\Users\dbhol\Desktop\blackbelttest ver 1\blackbelttest\apps\blackbeltapp\models.py" in add_product
  9.        secreteid= User.objects.get(id=request.session['loguser_id'])

Exception Type: NameError at /blackbelt/create
Exception Value: global name 'request' is not defined
    Html matters

     <form class="" action="{% url 'blackbelt:create' %}" method="post">
                {% csrf_token %}
                <p>Product: <input type="text" name="product" value=""></p>
                <input type="submit" name="" value="Create">
            </form>


    view.py that matters

    def create(request):
    viewsResponse = Myblackbelt.objects.add_product(request.POST)


    return redirect ('blackbelt:index')

    Models in full

   from __future__ import unicode_literals
from django.db import models
from ..logReg.models import User

class ProductManager(models.Manager):

    def add_product(self, postData):
        print 'dog here'
        secreteid= User.objects.get(id=request.session['loguser_id'])
        Myblackbelt = self.create(product = postData['product'], creator=secreteid)




class Myblackbelt(models.Model):
    product = models.CharField(max_length = 70)
    created_at = models.DateTimeField(auto_now_add = True)
    updated_at = models.DateTimeField(auto_now = True)
    loguser = models.ManyToManyField(User, related_name='loguser')
    creator = models.ForeignKey(User, related_name='creator')


    objects = ProductManager()

1 个答案:

答案 0 :(得分:0)

您的代码结构不完善,很快就会中断。但是,要克服MultiValueDictKeyError错误,请写下这些:

# views.py

def create(request):
    if request.method == 'POST':
        viewsResponse = Myblackbelt.objects.add_product(request.POST)
        secreteid= User.objects.get(id=request.session['user_id'])

    return redirect ('blackbelt:index')


class ProductManager(models.Manager):
    def add_product(self, postData):
        # always set a default value if dict key is not found
        # of course you must (also) check if postData is of type dict
        product = postData.get('product', None)
        creator_id = postData.get('loguser_id', None)
        if product is not None and creator_id is not None:
            creator = User.objects.get(id=creator_id)
            Myblackbelt = self.create(product=product, creator=creator)
        print 'dog here'