【发布时间】:2021-03-29 13:02:55
【问题描述】:
我正在尝试将主键作为 URL 参数从 CreatePost 传递到 UploadImage 视图,但即使我在 URL 中看到主键,我也会不断收到错误消息。我是 Django 的新手,所以请帮助我:) views.py
class CreatePost(CreateView):
model=shopModels.UserPost
template_name='shop/create_post.html'
fields='__all__'
def get_form(self, form_class=None):
form = super().get_form(form_class)
form.fields['category'].widget.attrs['class'] = 'form-control'
form.fields['category'].widget.attrs['oninvalid']="this.setCustomValidity('Ovo polje je obavezno!')"
return form
def dispatch(self, request, *args, **kwargs):
if not request.user.is_authenticated:
return redirect('login')
return super(CreatePost, self).dispatch(request, *args, **kwargs)
def get_success_url(self):
return reverse('image_upload',kwargs={'user_post':self.object.id})
class UploadImage(CreateView):
model=shopModels.Image
template_name='shop/images_upload.html'
fields='__all__'
def dispatch(self, request, *args, **kwargs):
if not request.user.is_authenticated:
return reverse('login')
return super(UploadImage, self).dispatch(request, *args, **kwargs)
urls.py ...
path('create_post/',views.CreatePost.as_view(),name="create_post"),
path('image_upload/<int:user_post>',views.UploadImage.as_view(),name="image_upload"),
...
models.py
class UserPost(models.Model):
id = models.AutoField(primary_key=True)
user=models.ForeignKey(Account,on_delete=models.CASCADE)
title=models.CharField(max_length=255)
text=models.TextField(null=True)
category=models.ForeignKey(Category,null=True,on_delete=models.SET_NULL)
is_used=models.BooleanField(default=False)
price=models.IntegerField(default=0)
created_at = models.DateField(auto_now_add=True)
updated_at = models.DateField(auto_now=True)
is_active = models.BooleanField(default=True)
def __str__(self):
return self.title + ' | ' + str(self.user)
def get_absolute_url(self,*args,**kwargs):
return reverse('image_upload', kwargs={'user_post':self.id})
class Image(models.Model):
id = models.AutoField(primary_key=True)
user_post=models.ForeignKey(UserPost,default=None, on_delete=models.CASCADE)
image=models.ImageField(null=True,blank=True,upload_to='images/')
def __str__(self):
return self.user_post.title
def get_absolute_url(self):
return reverse('index')
编辑!!!
NoReverseMatch at /image_upload/23
没有找到没有参数的“image_upload”反向。尝试了 1 种模式:['image_upload/(?P
未找到任何参数的“image_upload”反向。尝试了 1 种模式:['image_upload/(?P
【问题讨论】:
-
您帖子标题中的错误与您的代码不匹配。你能包括完整的stacktrack吗?目前,您的代码提供 kwargs 来反转,但错误表示未提供任何参数。有什么事情没有排队。
-
我刚刚编辑了一个帖子。我想这是一个愚蠢的问题,但我在 Django 中真的很新,真的很困惑.. 错误说没有提供任何参数,但我在 url 中看到了 id