我对Python和Django非常陌生,我正在学习ericmatthes的Python速成课程(第1版)。在第19章之前,一切都运行得很好,当时我正在为用户添加功能,以便向主题添加条目。基本上,它是一个网络应用程序,它的工作方式有点像一本日记,记录你所学到的关于特定主题的东西。你知道吗
我加入了一些print语句,试图找出问题的确切位置,并且从中可以看出def new\u entry函数中的if语句似乎存在问题视图.py. 我不知道从这里到底要去哪里。在当前代码中,我只有第一条if语句正下方的一条语句执行print(“这是在请求一个新表单”)
我的视图.py带相关条目的文件
def new_entry(request, topic_id):
"""Add a new entry for a particular topic."""
topic = Topic.objects.get(id=topic_id)
if request != 'POST':
# No data submitted; create blank form
form = EntryForm()
print("this is requesting a new form")
else:
print("else statment runs?")
# POST data submitted; process data.
form = EntryForm(data=request.POST)
print("The else statment is running")
if form.is_valid():
print("the form.is_valid function works")
new_entry = form.save(commit=False)
new_entry.topic = topic
new_entry.save()
print("new_entry saved!")
return HttpResponseRedirect(reverse('learning_logs:topic', args=[topic_id]))
context = {'topic': topic, 'form': form}
print(context)
return render(request, 'learning_logs/new_entry.html', context)
我的表单.py包含窗体的
from django import forms
from .models import Topic, Entry
class TopicForm(forms.ModelForm):
class Meta:
model = Topic
fields = ['text']
labels = {'test': ''}
class EntryForm(forms.ModelForm):
class Meta:
model = Entry
fields = ['text']
labels = {'text': ''}
widgets = {'text': forms.Textarea(attrs={'cols': 80})}
新条目模板
{% extends "learning_logs/base.html" %}
{% block content %}
<p><a href="{% url 'learning_logs:topic' topic.id %}">{{ topic }}</a></p>
<p>Add a new entry:</p>
<form action="{% url 'learning_logs:new_entry' topic.id %}" method='post'>
{% csrf_token %}
{{ form.as_p }}
<button name='submit'>add entry</button>
</form>
{% endblock content %}
我有种感觉,我错过了一些简单的东西,但如果我需要的话,我会把所有东西添加到git hub repo中,这样你就可以在需要时查看那里。你知道吗
if request != 'POST'
检查请求是否不是POST请求是不对的。你的if语句应该是if request.method != 'POST'
。你知道吗查看Django文档:https://docs.djangoproject.com/en/2.2/ref/request-response/#django.http.HttpRequest.method
相关问题 更多 >
编程相关推荐