제출하여 데이터베이스에 항목을 업로드하는 양식을 만들었습니다. 문제는 URL이 이제는 다르기 때문에 f5 키를 누르면 양식이 다시 제출된다는 것입니다.URL 패턴을 사용하는 적절한 방법
나는이 두 URL 패턴
urlpatterns = [
url(r'(?i)^CMS/$', views.CMS, name='CMS'),
url(r'^createItem/$', views.createItem, name='createItem')
]
을 내보기 내 양식이
def CMS(request):
form = itemCreateForm()
context = {
'form' : form,
'message' : 'Content Manage Site'
}
return render(request, 'CMS.html', context)
def createItem(request):
f = itemCreateForm(request.POST)
if f.is_valid():
f.save()
pass
form = itemCreateForm()
context = {
'form' : form,
'message' : 'ItemCreated!'
}
return render(request, 'CMS.html', context)
처럼 보이는 CMS.html
{% if message %}
{{ message }}
{% endif %}
<div class='newItemFields'>
<form action="{% url 'kar:createItem' %}" method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit">
</form>
</div>
class itemCreateForm(ModelForm):
class Meta:
model = item
fields = ['name', 'type', 'price']
홈페이지/CMS /에서 시작하여 양식을 작성하고 제출 버튼을 누르면보기 기능 createItem
이 실행되어 데이터베이스에 개체가 만들어지고 저장됩니다. 사용자를 홈페이지/CMS/createItem으로 보냅니다. 그리고 이제는 사용자가 f5 키를 누를 때마다 createItem 함수가 다시 실행되고 입력 필드가 비어 있더라도 이전 객체와 동일한 값을 가진 다른 객체를 데이터베이스에 삽입합니다 (내 머리를 감쌀 수 없음).
나는 또한 내가 의심 스럽다고 생각하는 form = itemCreateForm()
을 두 번 쓰지 않습니까?
createItem을 실행 한 후 사용자에게 홈페이지/CMS/홈페이지 및 CMS/createItem이 아닌 사용자에게 다시 보내야합니다. 그게 올바른 방법일까요? 아니면 이것을하는 현명한 방법이 있습니다.
이 지금 정리되어 템플릿
메시지 디스플레이 부분에 작은 변화를 필요가 더 이상 필요하지? – e4c5