Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中使用基于类的视图将会话_id写入表_Python_Django_Django Models_Django Forms_Django Views - Fatal编程技术网

Python 如何在Django中使用基于类的视图将会话_id写入表

Python 如何在Django中使用基于类的视图将会话_id写入表,python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,我试图使用PictureCreateViewClass将存储在会话中的会话id写入名为“Picture”的表中。我能够打印会话id,从而确认会话id可用。我想把这个值写到图片表中,有人能建议我怎么做吗 下面是我的观点.py class PictureCreateView(CreateView): model = picture template_name_suffix = '_upload' # The below function saves the file to a

我试图使用PictureCreateViewClass将存储在会话中的会话id写入名为“Picture”的表中。我能够打印会话id,从而确认会话id可用。我想把这个值写到图片表中,有人能建议我怎么做吗

下面是我的观点.py

class PictureCreateView(CreateView):
    model = picture
    template_name_suffix = '_upload'
    # The below function saves the file to a specified location in model while converting the
    # files to a json format and providing a response

    def form_valid(self, form):
        print self.request.session['s_id']            
        # self.object will contain the object that the view is operating upon.
        self.object = form.save()           
        files = [serialize(self.object)]    
        data = {'files': files}
        response = JSONResponse(data, mimetype=response_mimetype(self.request))
        response['Content-Disposition'] = 'inline; filename=files.json'
        return response

    def form_invalid(self, form):
        data = json.dumps(form.errors)
        return HttpResponse(content=data, status=400, content_type='application/json')
models.py

class picture(models.Model):
    file = models.ImageField(upload_to=get_upload_file_name)
    slug = models.SlugField(max_length=50, blank=True)

    #Below line added for storing of session_id
    session_id = models.CharField(max_length =100)

    def __unicode__(self):
        return self.file.name

    @models.permalink
    def get_absolute_url(self):
        return ('upload-new', )

    def save(self, *args, **kwargs):
        self.slug = self.file.name
        super(picture, self).save(*args, **kwargs)

    def delete(self, *args, **kwargs):
        """delete -- Remove to leave file."""
        self.file.delete(False)
        super(picture, self).delete(*args, **kwargs)
我已尝试将models.py中的save方法修改为以下内容,但出现了一个错误,指出“picture对象没有属性请求”

def save(self, *args, **kwargs):
    self.session_id = self.request.session['s_id'] # comes up with 'picture object has no attribute request'

    self.slug = self.file.name
    super(picture, self).save(*args, **kwargs)

我已将您的代码置于“form\u valid”方法中,位于
files=[serialize(self.object)]
上方。当我试图上传文件时,它出现了一个错误“错误请求”。文件和会话id都不会写入数据库。可能是因为
文件=[serialize(self.object)]
?您需要json响应或url中的文件内容吗?会话id=models.CharField(最大长度=100,空白=True,空=True);在模板中-表单enctype=“多部分/表单数据”?;序列化-是否可以转换为base64数据?(django serializer仅适用于iterable数据)在添加此代码之前,我能够提供json响应
self.object=form.save(commit=False)self.object.session\u id=self.request.session['s\u id']self.object.save()
,使用form\u有效的方法。我做了一个小原型,没有序列化就可以很好地在视图中打印-不好的做法
 def form_valid(self, form):         
       # self.object will contain the object that the view is operating upon.
       self.object = form.save(commit=False) 
       self.object.session_id = self.request.session['s_id']    
       self.object.save()