`
canofy
  • 浏览: 822320 次
  • 性别: Icon_minigender_1
  • 来自: 北京、四川
社区版块
存档分类
最新评论

django简单的入门例子

阅读更多
django入门例子:

都是参考了网上的例子完成的~

建立项目:django-admin.py startproject test1
建立目录:django-admin.py startapp views
         django-admin.py startapp db
         django-admin.py startapp templates

附件为所有代码

hello.py
如下:
#!/usr/bin/env python
#-*-coding:utf-8-*-
from django.http import HttpResponse
from django.template import Context,Template
from django.template.loader import get_template
from django.shortcuts import render_to_response

import datetime
def current_time(request):
    now=datetime.datetime.now()
    html="It is now %s ." %now
    return HttpResponse(html)
    
    
def hours_ahead(request,offset):
    offset=int(offset)
    dt=datetime.datetime.now()+datetime.timedelta(hours=offset)
    html="In %s hour(s) ,it will be %s." %(offset,dt);
    return HttpResponse(html)
    
def hours_after(request,offset):
    offset=int(offset)
    dt=datetime.datetime.now()-datetime.timedelta(hours=offset)
    html="%s hour(s) ago,it will be %s." %(offset,dt);
    return HttpResponse(html)
    
# plus_or_minus和offset参数由urls.py中设置,这里的设置是
#(r'^now/(plus|minus)(\d{1,2})hours/$', hello.hours_offset),
#与位置顺序有关
def hours_offset(request,plus_or_minus,offset):
    offset=int(offset)
    if plus_or_minus=='plus':
        dt=datetime.datetime.now()+datetime.timedelta(hours=offset)
        html="In %s hour(s) ,it will be %s." %(offset,dt);
    else:
         dt=datetime.datetime.now()-datetime.timedelta(hours=offset)
         html="%s hour(s) ago,it will be %s." %(offset,dt)
    return HttpResponse(html)

#使用模板
def t_current_time(request):
    now=datetime.datetime.now()
    html="<body><html>It is now {{current_time}}</html></body>." 
    t=Template(html)
    c=Context({'current_time':now})
    ret=t.render(c)    
    return HttpResponse(ret)

#使用模板,需要在setting.py文件里配置TEMPLATE_DIRS , 在这里的地址是'f:/django/test1/templates',  
def tl_current_time(request):
    now=datetime.datetime.now()
    t=get_template('current_time.html')
    c=Context({'current_time':now})
    ret=t.render(c)    
    return HttpResponse(ret)

#使用render_to_response()方法渲染模板
def render_current_time(request):
    now=datetime.datetime.now()
    return render_to_response('current_time.html',{'current_time':now})


def renderl_current_time(request):
    current_time=datetime.datetime.now()
    #locals()返回一个包含当前作用域里面的所有变量和他们的值的字典
    #在这里就相当于{'current_time':current_time}
    return render_to_response('current_time.html',locals())
    
#前台循环
def musician_list(request):
    MUSICIANS = [  
        {'name': 'Django Reinhardt', 'genre': 'jazz'},  
        {'name': 'Jimi Hendrix',     'genre': 'rock'},  
        {'name': 'Louis Armstrong',  'genre': 'jazz'},  
        {'name': 'Pete Townsend',    'genre': 'rock'},  
        {'name': 'Yanni',            'genre': 'new age'},  
        {'name': 'Ella Fitzgerald',  'genre': 'jazz'},  
        {'name': 'Wesley Willis',    'genre': 'casio'},  
        {'name': 'John Lennon',      'genre': 'rock'},  
        {'name': 'Bono',             'genre': 'rock'},  
        {'name': 'Garth Brooks',     'genre': 'country'},  
        {'name': 'Duke Ellington',   'genre': 'jazz'},  
        {'name': 'William Shatner',  'genre': 'spoken word'},  
        {'name': 'Madonna',          'genre': 'pop'},  
    ]
    return render_to_response('musician_list.html',{'musicians':MUSICIANS})


urls.py
这里开通了django的后台管理的功能,1.0版本与0.96版本不太一样
from django.conf.urls.defaults import *
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
#from test1.views.hello import current_time
from test1.views import hello
from test1.views import test_form
from test1.views import login

urlpatterns = patterns('',
    # Example:
    # (r'^test1/', include('test1.foo.urls')),
    #(r'^index/', include('test1.test.index')),
    (r'^now/$', hello.current_time),
    #(r'^now/plus(\d{1,2})hours/$', hello.hours_ahead),
    #(r'^now/minus(\d{1,2})hours/$', hello.hours_after),
    (r'^now/(plus|minus)(\d{1,2})hours/$', hello.hours_offset),
    (r'^tnow/$', hello.t_current_time),
    (r'^tlnow/$', hello.tl_current_time),
    (r'^rnow/$', hello.render_current_time),
    (r'^rlnow/$', hello.renderl_current_time),
    (r'^list/$', hello.musician_list),
    (r'^forms/$', test_form.search),
    (r'^login/$', login.login),

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
    # to INSTALLED_APPS to enable admin documentation:
    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    (r'^admin/(.*)', admin.site.root),
)

数据库的简单操作:
这里与0.96似乎有很大的差别,
0.96的版本是class Admin: pass 这样加入admin的管理后台去
而1.0之后的版本则是通过admin.site.register(User) 这个语句是把User表加入到admin的管理后台去
另外也有变化,则需要参考文档,还没有使用那部分的功能

这是models.py
from django.db import models
from django.contrib import admin

# Create your models here.

class User(models.Model):
    id = models.IntegerField(primary_key=True)
    username = models.CharField(max_length=150, blank=True)
    password = models.CharField(max_length=150, blank=True)

class TUser(models.Model):
    username = models.CharField(max_length=150, blank=True)
    password = models.CharField(max_length=150, blank=True)

admin.site.register(User)
admin.site.register(TUser)

应用:test_form.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
from django.db.models import query
from django.db.models import Q
from django.shortcuts import render_to_response
from test1.db.models import TUser


def search(request):
    queryStr=request.GET.get('q','')
    #print request.GET.get('q','')
    #查询所有的对象
    #all=TUser.objects.all()
    #查询指定的对象
    #all=TUser.objects.filter(username='test')
    #查询大于test2的对象
    #all=TUser.objects.filter(username__gte='test2')
    #startswith 相当于WHERE username LIKE 'test%' 
    #all=TUser.objects.filter(username__startswith='test').filter(password='test')
    #Q对象 |表示or &表示and
    qset=(Q(username='test6')&Q(password='test6'))
    all=TUser.objects.filter(qset)
   
    #if queryStr=='':
    #    all=TUser.objects.all()
    #else:
    #    all=TUser.objects.filter(username=queryStr)
    
    #print all
    #results = User.objects
    #if request.method=='POST':
    #    print 1
    #else:
    #    print 2
    return render_to_response('formtest.html',{'all':all,'queryStr':queryStr})

templates:formtest.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en"> <head>
<title>Search{% if query %} Results{% endif %}</title>
</head> <body>
<h1>Search</h1>
<form action="." method="GET">
<label for="q">Search: </label>
<input type="text" name="q" value="{{ queryStr|escape }}">
<input type="submit" value="Search">
</form>
<ul>
    {% for a in all %}
<li>{{a.username}}-------------{{a.password}}</li>  
{% endfor %}
  
</ul>

</body>
</html>

用户登录例子:login.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
from django.http import HttpResponse
from test1.db.models import TUser
from django.shortcuts import render_to_response

def login(request):
    username=request.GET.get('username','')
    password=request.GET.get('password','')
    from django.db import connection
    cursor = connection.cursor()
    cursor.execute("SELECT count(*) FROM db_tuser WHERE username = %s group by id", [username])
    row = cursor.fetchone()
    print row
    
    return testsss(username,password)
   #if request.session.get('username')==username:
   #     return HttpResponse(username+' is login')
   # flag=checkLogin(username,password)
   # if flag==1:
   #     request.session['username']=username
   #     return HttpResponse('login success!')
   # else:
   #     return HttpResponse('login error')
    #return render_to_response('login.html',{'username':username,'info':''})
    

def testsss(username,password):
    flag=checkLogin(username,password)
    if flag==1:
        return HttpResponse('login success!')
    else:
        return HttpResponse('login error')


def checkLogin(username,password):
    try:
        m=TUser.objects.get(username=username)
        if password==m.password:
            #print 'login success'
            return 1
        else:
            #print 'password is error'
            return 2
    except:
        #print 'username is error'
        return 3



页面:login.html
{% extends "base.html" %}
{% block title %}login{% endblock %}  
   
{% block content %}
<form action="." method="GET">
<label for="q">login: </label>
<div>用户名:<input type="text" name="username" value="{{ username|escape }}" /></div>
<div>密码:<input type="password" name="password" value="" /></div>
<div><input type="submit" value="login"></div>
</form>

<p>
    {% for a in info   %}
    <div>username:{{a.username|escape}}------------password:{{a.password|escape}}</div>    
    {% endfor %}
</p>

{% endblock %}  



base.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">  
<html lang="en">  
<head>  
    <title>{% block title %}{% endblock %}</title>  
</head>  
<body>  
    <h1>My helpful timestamp site</h1>  
    {% block content %}{% endblock %}  
    {% block footer %}  
    <hr>  
    <p>Thanks for visiting my site.</p>  
    {% endblock %}  
</body>  
</html> 

分享到:
评论
1 楼 songtianbao 2013-09-07  
刚开始学Python和Djdango,弱弱地问下,你这网站怎么在运行环境中运行啊?只是粘贴了工程里的代码,不知道怎么让网站运行起来啊..

相关推荐

    django入门-增删改实例

    python中用django框架做的一个简单的入门实例-对用户信息的增删改

    django入门博客实例源码

    python2.6+ django1.4.5 入门博客实例源代码,dos命令行创建。

    最简单的Python-Django入门教程.doc

    最简单的Python Django入门教程 Django的学习教程也是分门别类,形式不一。或是较为体系的官方文档,或者风格自由 的博客文档,或者偏向实例的解析文档。即使官方文档,章节较多,文字阐述累赘,有 时候我们只是关注...

    Django入门教程

    很实用的教程,看过就上手。以一个应用实例为例,清晰的解释了django架构的组成。

    Django实例详情

    附件为一个Python + Django的实例, 希望能够帮助正在入门学习的小伙伴比较具体的理解Django的使用方法

    python web框架django开发入门含代码,自己整理 good

    (推荐)从python django配置到 django一步步配置开发环境到实例开发。非常适合喜欢django框架开发的朋友学习讨论。

    DjangoWeb开发指南

    致谢 引言 第一部分 入门 第1章 DjangoPython实战 1.1 Python技术就是Django技术 1.2 入门:Python交互解释器 ...第三部分 Django应用实例 第7章 PhotoGallery 7.1 模型 7.2 准备文件上传 7.3 安装PIL

    Django入门使用示例

    本文分享了Django一则入门实例,非常适合我这样的新手。。大家一起学习下。 进入正题。 使用版本Django 1.8.x 使用IDE工具PyCharm 开源Web应用框架Django图文教程 1.新建Django项目,我这里是使用命令创建项目的。...

    python Django的web开发实例(入门)

    也就是通过自动生成代码来建立一个Django项目–一个Django项目的设置集,包含了数据库配置、Django详细选项设置和应用 特性配置,具体操作步骤如下所示。 1.新建Django项目 选择sqlite数据库 2.创建网站模块...

    django_web.rar

    djangoweb demo-Python编程:从入门到实践书里的例子

    Django文档英文版-电纸书格式

    Django 最初被设计用于具有快速开发需求的新闻类站点,目的是要实现简单快捷的网站开发。以下内容简要介绍了如何使用 Django 实现一个数据库驱动的 Web 应用。 为了让您充分理解 Django 的工作原理,这份文档为您...

    Flask&Django.zip

    Flask和Django的入门文档。对于初学者来说Flask相对简单快捷一点,但是Django仍有其一定的优势。建议大家两个都试试看

    django.rar

    django2.2开发实战login的小例子打包,方便学习阶段入门使用 django2.2开发实战login的小例子打包,方便学习阶段入门使用 django2.2开发实战login的小例子打包,方便学习阶段入门使用

    Python3+Django2实现后台管理系统入门,含详细教程、数据库文件、完整后台管理系统源码

    Python3+Django2实现后台管理系统,含详细教程及数据库文件,使用 Django 我们只需要做一些配置,就可以实现简单的后台管理系统,下面我们以新闻系统为例子来搭建后台。

    django-docs-2.2-zh-hans.zip

    Model 实例: 实例方法 | 访问关联的对象 迁移: 迁移概述 | 操作参考 | SchemaEditor | 编写迁移 高级: 管理员 | 原始 SQL | 事务 | 聚合 | 搜索 | 自定义字段 | 多个数据库 | 自定义查询 | 查询表达式 | 条件表达式 ...

    django step by step

    django step by step从最简单的例子入手,让你轻松了解django框架。

    python基础教程:Django框架创建项目的方法入门教程

    本文实例讲述了Django框架创建项目的方法。分享给大家供大家参考,具体如下: Django 管理工具 安装 Django 之后,就有了可用的管理工具 django-admin.py。我们可以使用 django-admin.py 来创建一个项目: 我们可以来...

    Django框架模板用法入门教程

    主要介绍了Django框架模板用法,结合简单入门实例形式分析了Django框架模板标签、过滤器、模板继承等概念与使用技巧,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics