Create a model
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=1000)
desc = models.CharField(max_length=1000)
# makemigrations && migrate
Create a form
from django import forms
from .models import Article
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ['title', 'desc',]
Create a view
# at the top of the file
from .forms import ArticleForm
def article_create(request):
article_form = ArticleForm()
return render(request, "article_form.html", {"form": article_form})
Setup a new url
url(r'^articles/create?$', contact, name='article_create')
Create a template
<h1>Article Form</h1>
<form role="form" action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
Update description field widget
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ['title', 'desc',]
widgets = {
'desc': forms.Textarea(attrs={'class': 'desc'}),
}
Handle the POST request in the view
if request.method == 'POST':
article_form = ArticleForm(data=request.POST)
if article_form.is_valid():
article = article_form.save()
return redirect('article-detail', pk=article.pk)
else:
article_form = ArticleForm()