Python 如何使用模型表单更新django中的博客文章?
我正在用django创建一个博客。我正在使用模型表单进行输入。我想编辑一篇现有的博客文章,但无法使其正常工作 型号.pyPython 如何使用模型表单更新django中的博客文章?,python,django,forms,model,modelform,Python,Django,Forms,Model,Modelform,我正在用django创建一个博客。我正在使用模型表单进行输入。我想编辑一篇现有的博客文章,但无法使其正常工作 型号.py class tags(models.Model): name = models.CharField(max_length = 30) def __str__(self): return self.name class Article(models.Model): title = models.CharField(max_length=60) post
class tags(models.Model):
name = models.CharField(max_length = 30)
def __str__(self):
return self.name
class Article(models.Model):
title = models.CharField(max_length=60)
post = HTMLField()
editor = models.ForeignKey(User,on_delete=models.CASCADE)
tag = models.ManyToManyField(tags,blank=True)
pub_date = models.DateTimeField(auto_now_add=True)
article_image = models.ImageField(upload_to='articles/', blank=True)
photo_credits = models.CharField(max_length=60,default='unsplash.com')
class UpdateArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ['title','article_image','post','tags','photo_credits']
@login_required(login_url='/accounts/login/')
def update_article(request,id):
instance = Article.objects.get(id = id)
if request.method == 'POST':
form = UpdateArticleForm(request.POST, request.FILES,instance=instance)
if form.is_valid():
form.save()
return redirect('index')
else:
form = UpdateArticleForm(instance=instance)
return render(request,'article/update.html',{'form':form})
url(r'^article/update/$',views.update_article,name='update_article'),
Forms.py
class tags(models.Model):
name = models.CharField(max_length = 30)
def __str__(self):
return self.name
class Article(models.Model):
title = models.CharField(max_length=60)
post = HTMLField()
editor = models.ForeignKey(User,on_delete=models.CASCADE)
tag = models.ManyToManyField(tags,blank=True)
pub_date = models.DateTimeField(auto_now_add=True)
article_image = models.ImageField(upload_to='articles/', blank=True)
photo_credits = models.CharField(max_length=60,default='unsplash.com')
class UpdateArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ['title','article_image','post','tags','photo_credits']
@login_required(login_url='/accounts/login/')
def update_article(request,id):
instance = Article.objects.get(id = id)
if request.method == 'POST':
form = UpdateArticleForm(request.POST, request.FILES,instance=instance)
if form.is_valid():
form.save()
return redirect('index')
else:
form = UpdateArticleForm(instance=instance)
return render(request,'article/update.html',{'form':form})
url(r'^article/update/$',views.update_article,name='update_article'),
视图.py
class tags(models.Model):
name = models.CharField(max_length = 30)
def __str__(self):
return self.name
class Article(models.Model):
title = models.CharField(max_length=60)
post = HTMLField()
editor = models.ForeignKey(User,on_delete=models.CASCADE)
tag = models.ManyToManyField(tags,blank=True)
pub_date = models.DateTimeField(auto_now_add=True)
article_image = models.ImageField(upload_to='articles/', blank=True)
photo_credits = models.CharField(max_length=60,default='unsplash.com')
class UpdateArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ['title','article_image','post','tags','photo_credits']
@login_required(login_url='/accounts/login/')
def update_article(request,id):
instance = Article.objects.get(id = id)
if request.method == 'POST':
form = UpdateArticleForm(request.POST, request.FILES,instance=instance)
if form.is_valid():
form.save()
return redirect('index')
else:
form = UpdateArticleForm(instance=instance)
return render(request,'article/update.html',{'form':form})
url(r'^article/update/$',views.update_article,name='update_article'),
url.py
class tags(models.Model):
name = models.CharField(max_length = 30)
def __str__(self):
return self.name
class Article(models.Model):
title = models.CharField(max_length=60)
post = HTMLField()
editor = models.ForeignKey(User,on_delete=models.CASCADE)
tag = models.ManyToManyField(tags,blank=True)
pub_date = models.DateTimeField(auto_now_add=True)
article_image = models.ImageField(upload_to='articles/', blank=True)
photo_credits = models.CharField(max_length=60,default='unsplash.com')
class UpdateArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ['title','article_image','post','tags','photo_credits']
@login_required(login_url='/accounts/login/')
def update_article(request,id):
instance = Article.objects.get(id = id)
if request.method == 'POST':
form = UpdateArticleForm(request.POST, request.FILES,instance=instance)
if form.is_valid():
form.save()
return redirect('index')
else:
form = UpdateArticleForm(instance=instance)
return render(request,'article/update.html',{'form':form})
url(r'^article/update/$',views.update_article,name='update_article'),
我得到一个404错误。如果我用下面的url替换url,我会得到一个“update\u article”的反向,没有找到任何参数。尝试了1种模式:[“article/update/(?P[0-9]+)/$”]
url(r'^article/update/(?P<id>[0-9]+)/$',views.update_article,name='update_article'),
url(r'^article/update/(?P[0-9]+)/$),views.update\u article,name='update\u article'),
如何才能使其正常工作?您的视图和url配置是正确的,错误可能存在于模板中。尝试在模板中找到
{%url“update_article”%}
,并替换为
{%url“update_article”%}
注意表单中有“tags”字段,但在model中您将其命名为“tag”。我的models.py中有标签模型。我已编辑以显示it@GeoffreyMungai将
替换为您想要编辑的真实文章id
,这就是我首先使用
的原因。例如,如果您使用变量article
呈现文章,则使用{%url“update\u article”article.id%}进行更新