Django表单/视图/模板的故障排除以及它们如何一起工作

2024-05-29 05:53:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在努力从这本书中学习Django,我读了大部分,现在我正试图编写一个自己的webapp。我真的不明白它们是如何相互作用的,它们是如何不协调的。在


我的网址.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),

在视图.py文件看起来像这样。。。在

^{pr2}$

在表单.py文件看起来像

from django import forms

class ReferralCode(forms.Form):
    referralcode = forms.CharField()

模板看起来像这样。。。在

{% 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 %}

希望这足够的信息。在

我在找两样东西。首先,当我在提交表单后试图查看页面时,我没有找到位置,因为我假设“如果请求.方法=='POST':“未触发。很明显,这是很明显的,但我正处于这样一种模式中,我可以找到我生命中的缺陷。在

第二个问题基本上是请求帮助。不知怎么的,我读了好几章之后,似乎都没法相互联系。我知道模板和网址.py以及视图.py交互,我得到了(我想),但我不能真正理解数据库和表单如何相互作用,以及如何与视图/模板交互。比如说,我只是想要一个简单的表单,在这个表单中输入的任何用法都会写入数据库。。。你会怎么做?如果重要的话,我会用博士后。在

注意:模板中的表单和是我在这里找到的代码的一个修改版本,我试图通过操作来满足我的需求,但是失败了,所以不要过分的放弃,如果这没有意义的话,因为这些问题,我还没能处理那么多。在

由于我是新来的网站开发,我真的很感谢任何人愿意帮助我或指出我的正确方向。在


Tags: 文件djangofrompyimport视图模板表单
2条回答

嗯,这里有不少问题。在

首先,您的表单由基本视图homepageview呈现,并提交回同一个URL。然而,表单处理逻辑在一个单独的视图中,它不会被调用。或者更改表单的action参数以指向另一个URL,或者-更好-将所有逻辑移到同一个视图中。在

其次,表单处理视图没有返回响应或呈现模板。这是Django中的一个错误,如果您成功地调用了该视图,您将看到一个异常。在

第三,我发现很难相信你读了整本Django的书,却没有看到任何关于模型或数据库的东西。这里没有迹象表明您已经设置了任何模型,但是没有这些模型,Django不会向数据库写入任何内容。您需要这样做,然后将您的表单更改为ModelForm子类,之后您可以成功地调用form.save()。在

  1. 你在else子句中不返回任何内容。视图必须始终返回响应,这可以是几乎任何内容,但在大多数情况下,您将返回HttpResponse(我非常喜欢^{}快捷方式)的(子)类的实例。最好在视图的底部有一个默认的返回值,为“特殊”响应添加一些早期返回值,否则让执行达到默认返回值—这样就不会出现什么都不返回的情况。

  2. {你必须通过一个模型来保存数据。通常执行模型如下:

    1. 你的应用程序收到一个请求网址.py搜索应调用的视图
    2. 请求通过middleware
    3. 你的观点被称为“做”某事。一、 e.它从数据库中获取数据(同样使用模型)或在数据库中存储某些内容(或者保存上载的文件、发送邮件等)
    4. 返回“查看你”
    5. 返回的“something”通过中间件传递,并最终在传递给浏览器的数据流中进行转换

就这样。这有点简单,但它几乎涵盖了所有重要的部分。在

相关问题 更多 >

    热门问题