Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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
Javascript Django在post image create函数视图中获取类型错误_Javascript_Python_Django_Django Models_Django Views - Fatal编程技术网

Javascript Django在post image create函数视图中获取类型错误

Javascript Django在post image create函数视图中获取类型错误,javascript,python,django,django-models,django-views,Javascript,Python,Django,Django Models,Django Views,下面的代码出现错误TypeError:post\u image\u create()缺少1个必需的位置参数:“post”我想在表单提交之前将多个图像异步添加到django表单。我有用于在客户端上载图像的Javascript代码,并将其异步添加到我的服务器。我需要做的就是给它一个端点 如果有任何帮助,我将不胜感激 型号 class FileModel(models.Model): post = models.ForeignKey(Article, on_delete=models.CASC

下面的代码出现错误
TypeError:post\u image\u create()缺少1个必需的位置参数:“post”
我想在表单提交之前将多个图像异步添加到django表单。我有用于在客户端上载图像的Javascript代码,并将其异步添加到我的服务器。我需要做的就是给它一个端点

如果有任何帮助,我将不胜感激

型号

class FileModel(models.Model):
    post = models.ForeignKey(Article, on_delete=models.CASCADE)
    file = models.FileField(upload_to='stories', blank=True, null=True)
def post_image_create(request, post):
    if(request.method == "POST"):
        for f in request.FILES.getlist('file'):
            FileModel.objects.create(file=f)


class NewsCreateView(CreateView):
    form_class = FileForm
    template_name = 'news/news_create.html'
    success_url = '/'

    def form_valid(self, form):
        post = form.save(commit=False)
        post.author = self.request.user
        post_image_create(request=self.request, post=post)  # This function is defined above
        post.save()
        return super().form_valid(form)
视图

class FileModel(models.Model):
    post = models.ForeignKey(Article, on_delete=models.CASCADE)
    file = models.FileField(upload_to='stories', blank=True, null=True)
def post_image_create(request, post):
    if(request.method == "POST"):
        for f in request.FILES.getlist('file'):
            FileModel.objects.create(file=f)


class NewsCreateView(CreateView):
    form_class = FileForm
    template_name = 'news/news_create.html'
    success_url = '/'

    def form_valid(self, form):
        post = form.save(commit=False)
        post.author = self.request.user
        post_image_create(request=self.request, post=post)  # This function is defined above
        post.save()
        return super().form_valid(form)

这意味着您的请求函数缺少一个参数<代码>类型错误:post\u image\u create()缺少1个必需的位置参数:“post”

在视图函数中,您定义了
def post\u image\u create(request,post):
但在urls.py中,您将其设置为:
path('new\u image/',views.post\u image\u create,name='new\u image')
如果要传递参数,则需要在urls.py url路由器中设置该参数

但这并不用于传递post数据。您可以使用请求对象访问post数据。将视图功能更改为:

def post_image_create(request):
  if(request.method == "POST"):
    files = request.FILES 
     ...then do stuff

在文档中:


关于将url.py中的参数传递给视图函数的更多信息:

查看此文档,了解如何获取ajax requests@afi的csrf令牌上一次更新的任何更新?我不认为这是解决这个问题的最佳方式,因为更新我的答案和来回更新你的问题会掩盖你原来的问题和最初的修复建议。也许你应该提出一个新问题。是的,亲爱的,我正在努力找到问题的解决办法。你的答案对我来说是正确的。。。