Python Django表单/视图/模板的故障排除以及它们如何协同工作
我目前正试图从这本书中学习Django,我读了其中的大部分,现在正试图编写一个我自己的网络应用程序。我真的搞不懂它们是如何相互作用的,它们是如何不合拍的Python Django表单/视图/模板的故障排除以及它们如何协同工作,python,django,Python,Django,我目前正试图从这本书中学习Django,我读了其中的大部分,现在正试图编写一个我自己的网络应用程序。我真的搞不懂它们是如何相互作用的,它们是如何不合拍的 我的URL.py文件如下所示 from django.conf.urls.defaults import patterns, include, url from users.views import homepageview, submitted, referral_create urlpatterns = patterns('', (r'
我的URL.py文件如下所示
from django.conf.urls.defaults import patterns, include, url
from users.views import homepageview, submitted, referral_create
urlpatterns = patterns('',
(r'^$', homepageview),
(r'^submitted/$', referral_create),
# Create your views here.
from django.shortcuts import render_to_response
from django import forms
from datreferral.users.forms import ReferralCode
def homepageview(request):
now = 'your damn referral code'
return render_to_response('datreferraltemplate.html', {'now': now})
def referral_create(request):
if request.method == 'POST':
form = ReferralCode(request.POST)
if form.is_valid():
new_code = form.save()
return HttpResponseRedirect(reverse(contact_details, args=(new_contact.pk,)))
else:
form = ReferralCode()
{% extends "base.html" %}
{% block title %}
Enter your referral codes!
{% endblock %}
{% block content %}
<h1>Enter your code</h1>
{% if errors %}
<ul>
{% for error in errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
<form action="" method="POST">
<p>Subject: <input type="text" name="subject" value="{{ referralcode }}"></p>
<input type="submit" value="Submit">
</form>
{% endblock %}
views.py文件如下所示
from django.conf.urls.defaults import patterns, include, url
from users.views import homepageview, submitted, referral_create
urlpatterns = patterns('',
(r'^$', homepageview),
(r'^submitted/$', referral_create),
# Create your views here.
from django.shortcuts import render_to_response
from django import forms
from datreferral.users.forms import ReferralCode
def homepageview(request):
now = 'your damn referral code'
return render_to_response('datreferraltemplate.html', {'now': now})
def referral_create(request):
if request.method == 'POST':
form = ReferralCode(request.POST)
if form.is_valid():
new_code = form.save()
return HttpResponseRedirect(reverse(contact_details, args=(new_contact.pk,)))
else:
form = ReferralCode()
{% extends "base.html" %}
{% block title %}
Enter your referral codes!
{% endblock %}
{% block content %}
<h1>Enter your code</h1>
{% if errors %}
<ul>
{% for error in errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
<form action="" method="POST">
<p>Subject: <input type="text" name="subject" value="{{ referralcode }}"></p>
<input type="submit" value="Submit">
</form>
{% endblock %}
form.py文件如下所示
from django import forms
class ReferralCode(forms.Form):
referralcode = forms.CharField()
模板看起来像这样
from django.conf.urls.defaults import patterns, include, url
from users.views import homepageview, submitted, referral_create
urlpatterns = patterns('',
(r'^$', homepageview),
(r'^submitted/$', referral_create),
# Create your views here.
from django.shortcuts import render_to_response
from django import forms
from datreferral.users.forms import ReferralCode
def homepageview(request):
now = 'your damn referral code'
return render_to_response('datreferraltemplate.html', {'now': now})
def referral_create(request):
if request.method == 'POST':
form = ReferralCode(request.POST)
if form.is_valid():
new_code = form.save()
return HttpResponseRedirect(reverse(contact_details, args=(new_contact.pk,)))
else:
form = ReferralCode()
{% extends "base.html" %}
{% block title %}
Enter your referral codes!
{% endblock %}
{% block content %}
<h1>Enter your code</h1>
{% if errors %}
<ul>
{% for error in errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
<form action="" method="POST">
<p>Subject: <input type="text" name="subject" value="{{ referralcode }}"></p>
<input type="submit" value="Submit">
</form>
{% endblock %}
{%extends“base.html”%}
{%block title%}
输入您的推荐代码!
{%endblock%}
{%block content%}
输入您的代码
{%if错误%}
{错误%中的错误为%0}
- {{error}}
{%endfor%}
{%endif%}
主题:
{%endblock%}
希望这是足够的信息
我在找两样东西。首先,当我在提交表单后尝试查看页面时,我没有找到where,因为我假设“if request.method=='POST':”没有触发。很明显,这是很明显的事情,但我正处于这样一种模式中,我可以找到我一生中的错误
我的第二个问题基本上是请求帮助。不知何故,在多次阅读这些章节之后,我似乎无法确定所有的片段是如何相互作用的。我知道template和url.py以及views.py相互作用,我得到了(我想),但我不能真正理解数据库和表单如何相互作用以及如何与视图/模板相互作用。比如说,我只是想要一个简单的表单,其中输入的任何用法都会写入数据库。。。你会怎么做?如果有必要的话,我会用postgres
注意:模板中的表单和是我在这里找到的代码的修改版本,我试图通过操作来满足我的需要,但失败了,所以如果这没有意义,请不要过度丢弃。由于这些问题,我还不能处理太多该部分
由于我是网络开发新手,我非常感谢任何愿意帮助我或为我指明正确方向的人。嗯,这里有很多错误 首先,表单由基本视图
homepageview
呈现,并提交回同一URL。然而,表单处理逻辑在一个单独的视图中,没有被调用。更改表单的action
参数以指向其他URL,或者-最好-将所有逻辑移到同一视图中
其次,表单处理视图没有返回响应或呈现模板。这是Django中的一个错误,如果您设法调用该视图,您将看到一个异常
第三,我很难相信你读了整本Django的书,却没有看到任何关于模型或数据库的内容。这里没有任何迹象表明您已经设置了任何模型,但是如果没有这些模型,Django将不会向数据库写入任何内容。您需要这样做,然后将表单更改为ModelForm子类,然后可以成功调用form.save()
HttpResponse
的(子)类的实例(我非常喜欢这个快捷方式)。最好在视图的底部有一个默认返回,为“特殊”响应添加一些早期返回,否则让执行达到默认返回-这样你就不会出现什么都不返回的情况就这样。这有点简化,但几乎涵盖了所有重要部分。哇。好吧老实说,我把它们都读了一遍,然后根据需要重读章节。我不能诚实地宣称自己的身份。我从来没有读过关于这个子类Modelform的任何东西。书上有吗?我得再看一遍,但我完全没有看清楚我也建立了模型,但正如我所说,我对它们如何与所有事物交互感到非常困惑,并且认为它们没有影响到这一点。所以我没有包括他们好的,哇。我得把所有的东西都检查一遍,找出我读这本书时出了什么问题。谢谢你的信息!