(Django) 19.1.1 새 주제 추가
2963 단어 Django
방법은 이전과 거의 같다. URL을 정의하고 보기 함수를 편집하며 템플릿을 작성한다.폼을 포함하는 모듈forms를 가져와야 하는 주요 차이점py.
1. 주제 추가를 위한 양식
ModelForm을 사용하여 폼을 만들었습니다. 이 폼은 18장에서 정의한 모델의 정보에 따라 자동으로 폼을 만듭니다.
모델스에서.py 동급 디렉터리에서forms 만들기py.
froms.py
from django import forms
from .models import Topic, Entry
class TopicForm(forms.ModelForm): # forms.ModelForm
# Meta , text
class Meta:
model = Topic # Topic
fields = ['text'] # text
labels = {'text': ''} # text
2. URL 모드 newtopic
http://localhost:8000/new_topic/
learning_logs/urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
--snip--
# Page for adding a new entry.
url(r'^new_entry/(?P\d+)/$', views.new_entry, name='new_entry'),
]
3. 뷰 함수 newtopic()
실현: new 입장topic 사이트, 폼 표시;제출한 폼을 처리하고 웹 페이지topics로 다시 지정합니다.
views.py
from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from .models import Topic
from .forms import TopicForm
--snip--
@login_required
def new_topic(request):
"""Add a new topic."""
# POST, , GET, 。
if request.method != 'POST':
# ,
form = TopicForm() # TopicForm()
else:
form = TopicForm(request.POST)
# , models.py
if form.is_valid():
# commit=False, Django , new_topic
new_topic = form.save(commit=False)
#
new_topic.save()
#
return HttpResponseRedirect(reverse('learning_logs:topics'))
#
# , TopicForm ,Django
context = {'form': form}
return render(request, 'learning_logs/new_topic.html', context)
4. 템플릿 newtopic
new_topic.html
{% extends "learning_logs/base.html" %}
{% block content %}
Add a new topic:
{% endblock content %}
5.topics에서 new 로 링크topic:
{% extends "learning_logs/base.html" %}
{% block content %}
Topics
--snip--
Add new topic
{% endblock content %}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.