﻿{"id":565,"date":"2011-07-26T23:53:44","date_gmt":"2011-07-26T15:53:44","guid":{"rendered":"http:\/\/nick.workao.org\/?p=565"},"modified":"2021-11-17T11:34:14","modified_gmt":"2021-11-17T03:34:14","slug":"django%e7%ae%80%e5%8d%95%e7%9a%84%e5%85%a5%e9%97%a8%e4%be%8b%e5%ad%90","status":"publish","type":"post","link":"http:\/\/nick.txtcc.com\/index.php\/python\/565","title":{"rendered":"django\u7b80\u5355\u7684\u5165\u95e8\u4f8b\u5b50"},"content":{"rendered":"<p>\u5efa\u7acb\u9879\u76ee:django-admin.py startproject test1<\/p>\n<p>\u5efa\u7acb\u76ee\u5f55:django-admin.py startapp views<\/p>\n<p>django-admin.py startapp db<\/p>\n<p>django-admin.py startapp templates<\/p>\n<p>hello.py<\/p>\n<pre escaped=\"true\" lang=\"python\" line=\"1\">\n#!\/usr\/bin\/env python\n#-*-coding:utf-8-*-\nfrom django.http import HttpResponse\nfrom django.template import Context,Template\nfrom django.template.loader import get_template\nfrom django.shortcuts import render_to_response\n\nimport datetime\ndef current_time(request):\n    now=datetime.datetime.now()\n    html=\"It is now %s .\" %now\n    return HttpResponse(html)\n\ndef hours_ahead(request,offset):\n    offset=int(offset)\n    dt=datetime.datetime.now()+datetime.timedelta(hours=offset)\n    html=\"In %s hour(s) ,it will be %s.\" %(offset,dt);\n    return HttpResponse(html)\n\ndef hours_after(request,offset):\n    offset=int(offset)\n    dt=datetime.datetime.now()-datetime.timedelta(hours=offset)\n    html=\"%s hour(s) ago,it will be %s.\" %(offset,dt);\n    return HttpResponse(html)\n\n# plus_or_minus\u548coffset\u53c2\u6570\u7531urls.py\u4e2d\u8bbe\u7f6e\uff0c\u8fd9\u91cc\u7684\u8bbe\u7f6e\u662f\n#(r'^now\/(plus|minus)(\\d{1,2})hours\/$', hello.hours_offset),\n#\u4e0e\u4f4d\u7f6e\u987a\u5e8f\u6709\u5173\ndef hours_offset(request,plus_or_minus,offset):\n    offset=int(offset)\n    if plus_or_minus=='plus':\n        dt=datetime.datetime.now()+datetime.timedelta(hours=offset)\n        html=\"In %s hour(s) ,it will be %s.\" %(offset,dt);\n    else:\n         dt=datetime.datetime.now()-datetime.timedelta(hours=offset)\n         html=\"%s hour(s) ago,it will be %s.\" %(offset,dt)\n    return HttpResponse(html)\n\n#\u4f7f\u7528\u6a21\u677f\ndef t_current_time(request):\n    now=datetime.datetime.now()\n    html=\"It is now {{current_time}}.\"\n    t=Template(html)\n    c=Context({'current_time':now})\n    ret=t.render(c)\n    return HttpResponse(ret)\n\n#\u4f7f\u7528\u6a21\u677f\uff0c\u9700\u8981\u5728setting.py\u6587\u4ef6\u91cc\u914d\u7f6eTEMPLATE_DIRS , \u5728\u8fd9\u91cc\u7684\u5730\u5740\u662f'f:\/django\/test1\/templates',\ndef tl_current_time(request):\n    now=datetime.datetime.now()\n    t=get_template('current_time.html')\n    c=Context({'current_time':now})\n    ret=t.render(c)\n    return HttpResponse(ret)\n\n#\u4f7f\u7528render_to_response()\u65b9\u6cd5\u6e32\u67d3\u6a21\u677f\ndef render_current_time(request):\n    now=datetime.datetime.now()\n    return render_to_response('current_time.html',{'current_time':now})\n\ndef renderl_current_time(request):\n    current_time=datetime.datetime.now()\n    #locals()\u8fd4\u56de\u4e00\u4e2a\u5305\u542b\u5f53\u524d\u4f5c\u7528\u57df\u91cc\u9762\u7684\u6240\u6709\u53d8\u91cf\u548c\u4ed6\u4eec\u7684\u503c\u7684\u5b57\u5178\n    #\u5728\u8fd9\u91cc\u5c31\u76f8\u5f53\u4e8e{'current_time':current_time}\n    return render_to_response('current_time.html',locals())\n\n#\u524d\u53f0\u5faa\u73af\ndef musician_list(request):\n    MUSICIANS = [\n        {'name': 'Django Reinhardt', 'genre': 'jazz'},\n        {'name': 'Jimi Hendrix',     'genre': 'rock'},\n        {'name': 'Louis Armstrong',  'genre': 'jazz'},\n        {'name': 'Pete Townsend',    'genre': 'rock'},\n        {'name': 'Yanni',            'genre': 'new age'},\n        {'name': 'Ella Fitzgerald',  'genre': 'jazz'},\n        {'name': 'Wesley Willis',    'genre': 'casio'},\n        {'name': 'John Lennon',      'genre': 'rock'},\n        {'name': 'Bono',             'genre': 'rock'},\n        {'name': 'Garth Brooks',     'genre': 'country'},\n        {'name': 'Duke Ellington',   'genre': 'jazz'},\n        {'name': 'William Shatner',  'genre': 'spoken word'},\n        {'name': 'Madonna',          'genre': 'pop'},\n    ]\n    return render_to_response('musician_list.html',{'musicians':MUSICIANS})\n\n<\/pre>\n<p>urls.py<\/p>\n<p>\u8fd9\u91cc\u5f00\u901a\u4e86django\u7684\u540e\u53f0\u7ba1\u7406\u7684\u529f\u80fd\uff0c1.0\u7248\u672c\u4e0e0.96\u7248\u672c\u4e0d\u592a\u4e00\u6837<\/p>\n<pre escaped=\"true\" lang=\"python\" line=\"1\">from django.conf.urls.defaults import *\n# Uncomment the next two lines to enable the admin:\nfrom django.contrib import admin\nadmin.autodiscover()\n#from test1.views.hello import current_time\nfrom test1.views import hello\nfrom test1.views import test_form\nfrom test1.views import login\n\nurlpatterns = patterns('',\n    # Example:\n    # (r'^test1\/', include('test1.foo.urls')),\n    #(r'^index\/', include('test1.test.index')),\n    (r'^now\/$', hello.current_time),\n    #(r'^now\/plus(\\d{1,2})hours\/$', hello.hours_ahead),\n    #(r'^now\/minus(\\d{1,2})hours\/$', hello.hours_after),\n    (r'^now\/(plus|minus)(\\d{1,2})hours\/$', hello.hours_offset),\n    (r'^tnow\/$', hello.t_current_time),\n    (r'^tlnow\/$', hello.tl_current_time),\n    (r'^rnow\/$', hello.render_current_time),\n    (r'^rlnow\/$', hello.renderl_current_time),\n    (r'^list\/$', hello.musician_list),\n    (r'^forms\/$', test_form.search),\n    (r'^login\/$', login.login),\n\n    # Uncomment the admin\/doc line below and add 'django.contrib.admindocs'\n    # to INSTALLED_APPS to enable admin documentation:\n    # (r'^admin\/doc\/', include('django.contrib.admindocs.urls')),\n\n    # Uncomment the next line to enable the admin:\n    (r'^admin\/(.*)', admin.site.root),\n)<\/pre>\n<p>\u6570\u636e\u5e93\u7684\u7b80\u5355\u64cd\u4f5c\uff1a<\/p>\n<p>\u8fd9\u91cc\u4e0e0.96\u4f3c\u4e4e\u6709\u5f88\u5927\u7684\u5dee\u522b\uff0c<\/p>\n<p>0.96\u7684\u7248\u672c\u662fclass Admin: pass \u8fd9\u6837\u52a0\u5165admin\u7684\u7ba1\u7406\u540e\u53f0\u53bb<\/p>\n<p>\u800c1.0\u4e4b\u540e\u7684\u7248\u672c\u5219\u662f\u901a\u8fc7admin.site.register(User) \u8fd9\u4e2a\u8bed\u53e5\u662f\u628aUser\u8868\u52a0\u5165\u5230admin\u7684\u7ba1\u7406\u540e\u53f0\u53bb<\/p>\n<p>\u53e6\u5916\u4e5f\u6709\u53d8\u5316\uff0c\u5219\u9700\u8981\u53c2\u8003\u6587\u6863\uff0c\u8fd8\u6ca1\u6709\u4f7f\u7528\u90a3\u90e8\u5206\u7684\u529f\u80fd<\/p>\n<p>\u8fd9\u662fmodels.py<\/p>\n<pre escaped=\"true\" lang=\"python\" line=\"1\">from django.db import models\nfrom django.contrib import admin\n\n# Create your models here.\n\nclass User(models.Model):\n    id = models.IntegerField(primary_key=True)\n    username = models.CharField(max_length=150, blank=True)\n    password = models.CharField(max_length=150, blank=True)\n\nclass TUser(models.Model):\n    username = models.CharField(max_length=150, blank=True)\n    password = models.CharField(max_length=150, blank=True)\n\nadmin.site.register(User)\nadmin.site.register(TUser)<\/pre>\n<p>\u5e94\u7528\uff1atest_form.py<\/p>\n<pre escaped=\"true\" lang=\"python\" line=\"1\">#!\/usr\/bin\/env python\n#-*-coding:utf-8-*-\nfrom django.db.models import query\nfrom django.db.models import Q\nfrom django.shortcuts import render_to_response\nfrom test1.db.models import TUser\n\ndef search(request):\n    queryStr=request.GET.get('q','')\n    #print request.GET.get('q','')\n    #\u67e5\u8be2\u6240\u6709\u7684\u5bf9\u8c61\n    #all=TUser.objects.all()\n    #\u67e5\u8be2\u6307\u5b9a\u7684\u5bf9\u8c61\n    #all=TUser.objects.filter(username='test')\n    #\u67e5\u8be2\u5927\u4e8etest2\u7684\u5bf9\u8c61\n    #all=TUser.objects.filter(username__gte='test2')\n    #startswith \u76f8\u5f53\u4e8eWHERE username LIKE 'test%'\n    #all=TUser.objects.filter(username__startswith='test').filter(password='test')\n    #Q\u5bf9\u8c61 |\u8868\u793aor &\u8868\u793aand\n    qset=(Q(username='test6')&Q(password='test6'))\n    all=TUser.objects.filter(qset)\n\n    #if queryStr=='':\n    #    all=TUser.objects.all()\n    #else:\n    #    all=TUser.objects.filter(username=queryStr)\n\n    #print all\n    #results = User.objects\n    #if request.method=='POST':\n    #    print 1\n    #else:\n    #    print 2\n    return render_to_response('formtest.html',{'all':all,'queryStr':queryStr})<\/pre>\n<p>templates:formtest.html<\/p>\n<pre escaped=\"true\" lang=\"python\" line=\"1\"><!DOCTYPE HTML PUBLIC \"-\/\/W3C\/\/DTD HTML 4.01\/\/EN\">\n<html lang=\"en\"> <head>\n<title>Search{% if query %} Results{% endif %}<\/title>\n<\/head> <body>\n<h1>Search<\/h1>\n<form action=\".\" method=\"GET\">\n<label for=\"q\">Search: <\/label>\n<input type=\"text\" name=\"q\" value=\"{{ queryStr|escape }}\">\n<input type=\"submit\" value=\"Search\">\n<\/form>\n<ul>\n    {% for a in all %}\n<li>{{a.username}}-------------{{a.password}}<\/li>  \n{% endfor %}\n\n<\/ul>\n\n<\/body>\n<\/html><\/pre>\n<p>\u7528\u6237\u767b\u5f55\u4f8b\u5b50\uff1alogin.py<\/p>\n<pre escaped=\"true\" lang=\"python\" line=\"1\">#!\/usr\/bin\/env python\n#-*-coding:utf-8-*-\nfrom django.http import HttpResponse\nfrom test1.db.models import TUser\nfrom django.shortcuts import render_to_response\n\ndef login(request):\n    username=request.GET.get('username','')\n    password=request.GET.get('password','')\n    from django.db import connection\n    cursor = connection.cursor()\n    cursor.execute(\"SELECT count(*) FROM db_tuser WHERE username = %s group by id\", [username])\n    row = cursor.fetchone()\n    print row\n\n    return testsss(username,password)\n   #if request.session.get('username')==username:\n   #     return HttpResponse(username+' is login')\n   # flag=checkLogin(username,password)\n   # if flag==1:\n   #     request.session['username']=username\n   #     return HttpResponse('login success!')\n   # else:\n   #     return HttpResponse('login error')\n    #return render_to_response('login.html',{'username':username,'info':''})\n\ndef testsss(username,password):\n    flag=checkLogin(username,password)\n    if flag==1:\n        return HttpResponse('login success!')\n    else:\n        return HttpResponse('login error')\n\ndef checkLogin(username,password):\n    try:\n        m=TUser.objects.get(username=username)\n        if password==m.password:\n            #print 'login success'\n            return 1\n        else:\n            #print 'password is error'\n            return 2\n    except:\n        #print 'username is error'\n        return 3<\/pre>\n<p>\u9875\u9762\uff1alogin.html<\/p>\n<pre escaped=\"true\" lang=\"python\" line=\"1\">{% extends \"base.html\" %}\n{% block title %}login{% endblock %}  \n\n{% block content %}\n<form action=\".\" method=\"GET\">\n<label for=\"q\">login: <\/label>\n<div>\u7528\u6237\u540d\uff1a<input type=\"text\" name=\"username\" value=\"{{ username|escape }}\" \/><\/div>\n<div>\u5bc6\u7801\uff1a<input type=\"password\" name=\"password\" value=\"\" \/><\/div>\n<div><input type=\"submit\" value=\"login\"><\/div>\n<\/form>\n\n<p>\n    {% for a in info   %}\n    <div>username:{{a.username|escape}}------------password:{{a.password|escape}}<\/div>    \n    {% endfor %}\n<\/p>\n\n{% endblock %}<\/pre>\n<p>base.html<\/p>\n<pre escaped=\"true\" lang=\"python\" line=\"1\"><!DOCTYPE HTML PUBLIC \"-\/\/W3C\/\/DTD HTML 4.01\/\/EN\">  \n<html lang=\"en\">  \n<head>  \n    <title>{% block title %}{% endblock %}<\/title>  \n<\/head>  \n<body>  \n    <h1>My helpful timestamp site<\/h1>  \n    {% block content %}{% endblock %}  \n    {% block footer %}  \n    <hr>  \n    <p>Thanks for visiting my site.<\/p>  \n    {% endblock %}  \n<\/body>  \n<\/html><\/pre>\n<p>django \u6846\u67b6\uff0c \u6a21\u677f\u5728templates\u4e2d \uff0c\u6837\u5f0f\u548c\u56fe\u7247\u5728site_media\uff0c<\/p>\n<p>\u5982<\/p>\n<p>templates\/index.html<\/p>\n<p>\u6587\u4ef6\u5185\u5bb9:<\/p>\n<pre escaped=\"true\" lang=\"python\" line=\"1\"><!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd\">\n\n<html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n\n<head>\n\n<meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\" \/>\n\n<link href=\"\/site_media\/admin\/css\/manager.css\" rel=\"stylesheet\" type=\"text\/css\" media=\"screen\" \/>\n\n<link href=\"\/site_media\/admin\/css\/manager.css\" rel=\"stylesheet\" type=\"text\/css\" media=\"screen\" \/><\/pre>\n<p>\u6ca1\u6709\u6ca1\u4ec0\u4e48\u65b9\u6cd5\u53ef\u4ee5\u5728templates\u4e2d\u7684\u6587\u4ef6\u53ea\u7528\u5199 <link href=\"css\/manager.css\" rel=\"stylesheet\" type=\"text\/css\" media=\"screen\" \/><\/p>\n<p>\u8fd9\u6837\u7f8e\u5de5\u505a\u5b8c\u9875\u9762\u540e\u53ea\u7528\u62ff\u8fc7\u6765\u52a0\u5165\u6570\u636e\u5c31\u53ef\u4ee5\u4e86\uff0c\u800c\u4e0d\u7528\u5728\u6539\u6837\u5f0f\u56fe\u7247\u7684\u8def\u5f84\u3002<\/p>\n<p>\u5728url.py\u4e2d<\/p>\n<pre escaped=\"true\" lang=\"python\" line=\"1\">import os\nsite_media = os.path.join(\nos.path.dirname(__file__),'site_media\/admin\/css\/'\n)<\/pre>\n<p>\u7136\u540e<\/p>\n<pre escaped=\"true\" lang=\"python\" line=\"1\">urlpatterns = patterns('',\n(r'^css\/(?P<path>.*)$','django.views.static.serve',\n{ 'document_root': site_media }),<\/pre>\n<p>\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>","protected":false},"excerpt":{"rendered":"<p>\u5efa\u7acb\u9879\u76ee:django-admin.py startproject test1 \u5efa\u7acb\u76ee\u5f55:django-admin.py startapp views django-admin.py startapp&#46;&#46;&#46;<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[274],"tags":[],"class_list":["post-565","post","type-post","status-publish","format-standard","hentry","category-python"],"_links":{"self":[{"href":"http:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/posts\/565","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/comments?post=565"}],"version-history":[{"count":16,"href":"http:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/posts\/565\/revisions"}],"predecessor-version":[{"id":2229,"href":"http:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/posts\/565\/revisions\/2229"}],"wp:attachment":[{"href":"http:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/media?parent=565"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/categories?post=565"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/nick.txtcc.com\/index.php\/wp-json\/wp\/v2\/tags?post=565"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}