[Django与表单]写一个简单的Django form表单处理

        注:以下内容转载自 现代魔法学院 网站的 写一个简单的Django form表单处理 一文,仅供学习使用。

        有了前面的 HttpRequest 对象与 request.META 的背景知识,现在我们可以写一个 form 表单处理了。

        除了基本的元数据,HttpRequest 对象还有两个属性包含了用户所提交的信息:request.GET 和 request.POST。二者都是类字典对象,你可以通过它们来访问 GET 和 POST 数据。

        写一个form表单处理

        1. 设计表单模板 form.html

        我们先设计一个表单页面,就是需要设计模板、view层函数与 URLconf。先把模板做出来吧:

<html>
<head>
    <title>Search</title>
</head>
<body>
    <form action="/search/" method="get">
        <input type="text" name="q">
        <input type="submit" value="Search">
    </form>
</body>
</html>

        2. view 层函数与 URLconf

        view 层函数:

def testform(request):
    return render_to_response('form.html')

        URLconf:

('^testform/$', testform),

        现在访问 http://127.0.0.1:8000/testform/,可以出现表单的页面里。不过,当你通过这个 form 提交数据时,你会得到一个 Django 404 错误。这个 form 指向的 URL /search/ 还没有被实现。让我们添加第二个视图函数并设置 URL:

        view 层的 search 函数:

def search(request):
    if 'q' in request.GET:
        message = 'You searched for: %r' % request.GET['q']
    else:
        message = 'You submitted an empty form.'
    return HttpResponse(message)

        URLconf:

(r'^search/$', search),

        现在在表单输入 nowamagic,提交,URL 为 http://127.0.0.1:8000/search/?q=nowamagic,页面显示:

You searched for: u'nowamagic'

        OK,成功。

        一些背景知识

        我们说“ request.GET 和 request.POST 是类字典对象”,意思是他们的行为像 Python 里标准的字典对象,但在技术底层上他们不是标准字典对象。比如说,request.GET 和 request.POST 都有 get()、keys() 和 values() 方法,你可以用用 for key in request.GET 获取所有的键。

        那到底有什么区别呢? 因为 request.GET 和 request.POST 拥有一些普通的字典对象所没有的方法。我们会稍后讲到。

你可能以前遇到过相似的名字:类文件对象,这些 Python 对象有一些基本的方法,如 read(),用来做真正的 Python 文件对象的代用品。

        POST 数据是来自 HTML 中的 form 标签提交的,而 GET 数据可能来自 form 提交也可能是 URL 中的查询字符串(the query string)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值