Python 如何在Django中使用基于类的视图将会话_id写入表
我试图使用PictureCreateViewClass将存储在会话中的会话id写入名为“Picture”的表中。我能够打印会话id,从而确认会话id可用。我想把这个值写到图片表中,有人能建议我怎么做吗 下面是我的观点.pyPython 如何在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
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()