CVB вид т.е. передачи и опубликовать запросы Funtion вид класса и в двух направлениях
Формулировки не разделены передние и задние концы, определяют HTML (form.html), логику записи (CVB & FvB) в представлении
Примечание : Примечание CSRF проблемы, если данные , представленные будут сообщенным повторяться несколько раз 403, два вида решений
1. В settings.py-MIDDLEWARE- CSRF (четвертый ряд) прокомментировал
2. Запись {% csrf_token%} в form.html
form.html код
<! DOCTYPE HTML > < HTML языки = "EN" > < голова > < мета - кодировка = "UTF-8" > < название > Заголовок </ название > </ голова > < тело > < форма действия = "/ add_article /" Метод = «пост» >
{% Csrf_token%}
Название: < входной тип = «текст» название = «название» > убывание: < входной тип = «текст» название = «убывание» > Содержание: < входной тип = «текст» имя = «содержание» > категория: < выберите имя = "категория" > {% Для с в categorys%} < Параметр значение = "{{c.id}}" > {{c.name}} </ опции > {% ENDFOR%} </ Выберите > < входной тип = "представить" значение = "提交" > </ образуют > </ тело > </ HTML >
views.py код
# Функция FVB方式 Защита add_article (запрос): если request.method == ' GET ' : categorys = Category.objects.all () возвращают визуализации (запрос, ' form.html ' , местные жители ()) еще : Название = request.POST.get ( ' название ' ) убывание = request.POST.get ( ' по убыванию ' ) Содержание = request.POST.get ( ' содержание ' ) категория = request.POST.get ( ' категория ' ) статья = статья (название = название, убывание = убывание, category_id = категория, содержание = содержание) article.save () вернуться HttpResponseRedirect ( ' / Blog ' ) # Перенаправление # Класса CVB方式 класс ArticleView (View): Защита получить (я, запрос): categorys = Category.objects.all () возвращают визуализации (запрос, ' form.html ' , местные жители ()) Защиту пост (я, запрос): Название = request.POST.get ( ' название ' ) убывание = request.POST.get ( ' по убыванию ' ) Содержание = request.POST.get ( ' содержание ' ) категория = request.POST.get ( ' категория ' ) статья = статья (название = название, убывание = убывание, category_id = категория, содержание = содержание) article.save () вернуться HttpResponseRedirect ( ' / Blog ' ) # Перенаправление
urls.py
от django.contrib импорта администратора из django.urls импорта путь из user.views импорта индекса, тест, блог, подробно, add_article, ArticleView urlpatterns = [ путь ( ' администратора / ' , admin.site.urls), Путь ( ' Индекс / ' , индекс), # добавить доступ к URL, индекс / может быть изменен, индексный метод views.py по пути ( ' Test / ' , Test), путь ( ' блог / ' , блог), # путь ( 'категория / <Int: идентификатор>', категория), путь ( ' подробнее / ' , подробно), # путь ( 'add_article /', add_article), # FVB方式 путь ( ' add_article / ' , ArticleView.as_view ()), # CVB方式 ]