windows上Python开发--3.Django的基础知识

最近两天下了班,没事学习了django的开发,今天做个总结。其实大家可以从百度,google搜到一些django的入门视频,初步了解一下django的框架。学习一些基础的概念和知识。本篇主要是对自己这两天做的做个总结。

1.创建第一个views.py

上一篇文章我们在windows上搭建好了django的开发环境并建立一个测试demo。

在settings.py的同级目录下新建views.py目录。并输入以下代码

from django.http import HttpResponse

def index(req):
    context="This is main page!!!"
    return HttpResponse(context)

在urls.py 安装如下更改

urlpatterns = patterns(‘‘,
    # Examples:
    # url(r‘^$‘, ‘drophome.views.home‘, name=‘home‘),
    # url(r‘^blog/‘, include(‘blog.urls‘)),

    url(r‘^admin/‘, include(admin.site.urls)),
    url(r‘^index/‘,‘drophome.view.index‘),

这时在浏览器里打开127.0.0.1:8000/index 就可以看到我们第一个view啦。在django的开发中我们主要采用mvc的模式即Models,view和control。但是这里的views.py更像control。在urls.py中是通过指定的url的对应view的index的函数。在urls.py 中指定的url是采用python中的正规表达式的形式,方便扩展。

2.利用Templates模板来格式化显示

在创建一个view.py后我们是HttpResponse来直接输出字符串的,如果想要输出更多,更复杂的内容就会很麻烦,要在代码写一些无关的html的标签。为此django提供了templats模板的概念,如下是一个模板的样本

<html>
<head>
    <title></title>
</head>
<body>
  <h1>{{context}}</h1>
 <table>
     {% for k,v in items %}
      <tr>
          <td>
             {{k}}
          </td>
          <td>
            {{ v}}
          </td>
      </tr>
     {% endfor %}

 </table>
</body>
</html>

可以保存为index.html从文件结构上和标准的html文档没什么差别。但是多了{{context}},和{% for .. %} 的东西。

期中{{ xxxx }} 表示为template的变量,所以的变量都是用{{ }} 来比标示,{% for k,v in items %} 是嵌入式的python的语句。用{% xxx %} 可以嵌入式python的语句。支持for,if,等python语句。那如果在view中使用template中呢。

from django.shortcuts import render_to_response
def display_meta(req):
    values=req.META.items()
    values.sort()
    return render_to_response("index.html",{"items":values},)

其实{{context}}我们没有给他传值,因此它不会显示,也不会报错。我们把从req获取的meta数据传给了items让他在index里面显示。

要使用template还要在settings里添加如下代码

TEMPLATE_DIRS=(os.path.join(BASE_DIR,"templates"),)

并在该项目的同级目录创建tempaltes的目录,存放index.html 模板文件。

3.Django的form的使用

在django中使用表单有两种方式:1.使用template用html定义form。2.使用django的forms类来创建模板。两种创建模板的方式都是简单方便。

首先使用template的方式创建form

<html>
<head>
    <title>Contact us</title>
</head>
<body>
    <h1>Contact us</h1>

    {% if errors %}
        <ul>
            {% for error in errors %}
            <li>{{ error }}</li>
            {% endfor %}
        </ul>
    {% endif %}

    <form action="/contact/" method="post">
        <p>Subject: <input type="text" name="subject"></p>
        <p>Your e-mail (optional): <input type="text" name="email"></p>
        <p>Message: <textarea name="message" rows="10" cols="50"></textarea></p>
        <input type="submit" value="Submit">
    </form>
</body>
</html>

在以上的html的中用html的form标签做了一个form,我我们看看如果在view处理这个form。

def contact2(request):
    errors = []
    if request.method == ‘POST‘:
        if not request.POST.get(‘subject‘, ‘‘):
            errors.append(‘Enter a subject.‘)
        if not request.POST.get(‘message‘, ‘‘):
            errors.append(‘Enter a message.‘)
        if request.POST.get(‘email‘) and ‘@‘ not in request.POST[‘email‘]:
            errors.append(‘Enter a valid e-mail address.‘)
        if not errors:
            # send_mail(
            #     request.POST[‘subject‘],
            #     request.POST[‘message‘],
            #     request.POST.get(‘email‘, ‘[email protected]‘),
            #     [‘[email protected]‘],
            # )
            return HttpResponseRedirect(‘/contact/thanks/‘)
    return render_to_response(‘contact_form.html‘,
        {‘errors‘: errors})

在view中可以直接通过request.POST.get(‘subject‘,‘‘)方式来获取form里面的value。

用Django的form类来创建表单,在django提供了form类,实现方式和model的类似。

from django import forms

class ContactForm (forms.Form):
    subject=forms.CharField(max_length=32)
    email = forms.EmailField(required=False)
    message = forms.CharField(widget=forms.Textarea)
    def clean_message(self):
        msg=self.cleaned_data[‘message‘]
        num_rows=len(msg.split())
        if num_rows<2:
              raise forms.ValidationError("Not enough words!")
        return msg

以上就是通过继承forms.Form 实现form。我们可以通过实现clean_filed 的形式针对每个字段做自定义校验。也可以设置每个字段的属性。例如

message = forms.CharField(widget=forms.Textarea)

在view中如果使用这个表单。

def contact(request):
    if request.method == ‘POST‘:
        form = ContactForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            # send_mail(
            #     cd[‘subject‘],
            #     cd[‘message‘],
            #     cd.get(‘email‘, ‘[email protected]‘),
            #     [‘[email protected]‘],
            # )
            return HttpResponseRedirect(‘/contact/thanks/‘)
    else:
        form = ContactForm( initial= {‘subject‘:‘I love this site‘})

    return render_to_response(‘contact2.html‘, {‘form‘: form})

也可以在view中初始化form。

看看template的html的展示时如何使用form

<html>
<head>
    <title>Contact us</title>
</head>
<body>
    <h1>Contact us</h1>

    {% if form.errors %}
        <p style="color: red;">
            Please correct the error{{ form.errors|pluralize }} below.
        </p>
    {% endif %}

    <form action="" method="post">
        <table>
            {{ form.as_table }}
        </table>
        <input type="submit" value="Submit">
    </form>
</body>
</html>

到此为止我们就了解了在django使用表单的方式。

4.在Django中建立models

在django中提供建模的models类。我们可以通过继承该类既可以实现创建一个表。

windows上Python开发--3.Django的基础知识,布布扣,bubuko.com

时间: 2024-08-01 22:45:38

windows上Python开发--3.Django的基础知识的相关文章

Windows上python开发--2安装django框架

上一篇文章中讲了如何在windows上安装和开发python.这篇文章需要在上一篇的基数上进行.首先确保你的windows上python可以正常运行. 在安装django之前,我们应该先安装一个esay_install 的python工具,通过该工具可以很轻松安装各种扩展的框架和package. 不用你先到第三方网站下载tar.gz 包,然后用python setup.py install 安装. 1.下载安装easy-install 的tools. easy-install 的官方地址: ht

Window上python开发--4.Django的用户登录模块User

在搭建网站和web的应用程序时,用户的登录和管理是几乎是每个网站都必备的.今天主要从一个实例了解以下django本身自带的user模块.本文并不对user进行扩展. 主要使用原生的模块. 1.User模块基础: 在使用user 之前先import到自己的iew中.相当与我们自己写好的models.只不过这个是系统提供的models. from django.contrib.auth.models import User # 导入user模块 1.1User对象属性 User 对象属性:usern

Window上python 开发--1.搭建开发环境

其实在开发python最好在ubuntu环境下,简单也便于扩展各个package.但是我的linux的电脑暂时不在身边.还的我老婆的电脑win7没办法啊. 由于python的跨平台性.在windows下和ubuntu下基本上没什么差别.下面从几个不步骤来搭建开发环境. 下载安装python.2.6. python有2.6的版本和3.x版本,建议还是使用python-2.6.x 版本,因为python的各大框架都支持2.6版本,但是不支持3.x版本. 例如简介并且功能强大的webpy 就不支持3.

Windows搭建python开发环境,python入门到精通[一]

从大学开始玩python到现在参加工作,已经有5年了,现在的公司是一家.net的公司用到python的比较少,最近公司有新项目需要用到python,领导希望我来跟其他同事training,就有了这篇博客,打算将python的training弄成一个简易的python系列,供大家入门使用.Python语言自从20世纪90年代初诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程.今天就让我们来搭建一个python的开发环境,Windows搭建python开发环境.一切从"Hello world

较详细介绍IBM AIX操作系统上常用的korn shell的基础知识

[导读]较详细介绍IBM AIX操作系统上常用的korn shell的基础知识. Korn Shell执行命令的顺序1.关键字,如if,for,function等2.别名(Aliases)3.内部命令,如cd, whence和函数等4.函数Functions5.脚本Scripts.在PATH中的可执行程序※找到命令的根源用下面的命令:whence -v command或:type commandAlias(别名)alias aliasname=command取消一个别名:unalias alia

【转】windows下python开发环境搭建

1 -- 安装python的前期准备 Python开发有众多工具,又以Eclipse+Pydev最为常见.Eclipse平台对开发同学来讲,肯定是如雷贯耳,自不用废话.而PyDev是Eclipse平台下的一个Python IDE插件,利用PyDev插件我们可以把Eclipse变为功能强大且易用的Python IDE.本文只简单介绍Eclipse+PyDev的安装和配置过程,至于开发.调试等高级话题不做深入分析. 首先,需要安装python的编译和执行程序,推荐安装Python2.7.3版本.至于

Windows下Python开发工具推荐

*  如果只是纯Python开发人员,WingIDE 是不二之选. 优点:短小精悍,启动快.调试快.反应快.Auto-completion快. 没有Eclispe的巨大臃肿.反应迟钝.跛脚的调试功能. 快捷键可以在Emacs,VS,Eclipse等之间自己选择. 个人最喜欢的功能是 Debug Probe,简直是交互式开发的利器. Linux和Wingows下都能用,一个安装包搞定. *  如果是Python和C的混合编程,需要进行mixed-mode C/Python debugging, 则

[Python学习] 专题四.文件基础知识

        前面讲述了函数.语句和字符串的基础知识,该篇文章主要讲述文件的基础知识(与其他语言非常类似). 一. 文件的基本操作         文件是指存储在外部介质(如磁盘)上数据的集合.文件的操作流程为: 打开文件(读方式\写方式)->读写文件(read\readline\readlines\write\writelines)->关闭文件 1.打开文件 调用函数open打开文件,其函数格式为: file_obj=open(filename[, mode[, buffering]])

【分享】4412开发板-嵌入式Linux开发需要掌握的基础知识和技能

本文转自迅为电子论坛:http://www.topeetboard.com 1.Linux 基础 安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linux系统的基本命令 认识Linux系统的常用服务安装Linux操作系统 Linux基本命令实践 设置Linux环境变量 定制Linux的服务 Shell 编程基础使用vi编辑文件 使用Emacs编辑文件 使用其他编辑器 2.Shell 编程基础