À propos des problèmes de formulaire Django
Donnez d'abord models.py et Forms.py
Description de l'image
Donnez-nous à nouveau le code de vues.py
def articleUpdate(request, articleId):
'''
Update the article instance:
1. Get the article to update; redirect to 404 if not found
2. Render a bound form if the method is GET
3. If the form is valid, save it to the model, otherwise render a
bound form with error messages
'''
articleToUpdate = get_object_or_404( Article, id=articleId)
template = 'article/articleCreateUpdate.html'
if request.method == 'GET':
print(ArticleForm(instance=articleToUpdate))
articleForm = ArticleForm(instance=articleToUpdate)
return render(request, template, {'articleForm':articleForm, 'article':articleToUpdate})
# POST
articleForm = ArticleForm(request.POST, instance=articleToUpdate)
if not articleForm.is_valid():
return render(request, template, {'articleForm':articleForm, 'article':articleToUpdate})
articleForm.save()
messages.success(request, '文章已修改')
return redirect('article:articleRead', articleId=articleId)
def commentCreate(request, articleId):
'''
Create a new article instance
1. If method is GET, render an empty form
2 . If method is POST, perform form validation. Display error messages if the form is invalid
3. Save the form to the model and redirect to the article page
'''
template = 'article/commentCreate.html'
articleToUpdate = get_object_or_404( Article, id=articleId)
if request.method == 'GET':
return render(request, template,{'commentForm':CommentForm(), 'article':articleToUpdate})
# POST
commentForm = CommentForm(request.POST, instance=articleToUpdate)
if not commentForm.is_valid():
return render(request, template, {'commentForm':commentForm(), 'article':articleToUpdate})
commentForm.save()
messages.success(request,'留言已新增')
return redirect('article:articleRead',articleId=articleId)
Les deux méthodes sont presque les mêmes, elles utilisent toutes les deux des formulaires, mais les formulaires que j'utilise ne sont pas du même type, l'un est ArticleForm et l'autre est CommentForm, mais le résultat apparaît dans les vues : commentCreate et son effet est égal à articleUpdate , Autrement dit, ajouter un message revient à modifier le contenu de l'article
Le formulaire est une classe Si vous retirez les données, pourquoi ne pas les remplir dans le formulaire.