1. 程式人生 > >Django學習筆記第五篇--實戰練習一--查詢數據庫並操作cookie

Django學習筆記第五篇--實戰練習一--查詢數據庫並操作cookie

settings sin -h update out backend uitable -s ror

一、啟動項目:

1 django-admin start mysite1
2 cd mysite1
3 python manage.py startapp loginapp

根據上文敲命令就可以創建好了一個項目結構,之後就是修改配置文件,這裏使用的數據庫是MySQL的。

二、修改配置文件:

settings.py

  1 """
  2 Django settings for mysite1 project.
  3 
  4 Generated by ‘django-admin startproject‘ using Django 1.8.
  5 
  6 For more information on this file, see
7 https://docs.djangoproject.com/en/1.8/topics/settings/ 8 9 For the full list of settings and their values, see 10 https://docs.djangoproject.com/en/1.8/ref/settings/ 11 """ 12 13 # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 14 import os 15 16 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__
))) 17 18 19 # Quick-start development settings - unsuitable for production 20 # See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/ 21 22 # SECURITY WARNING: keep the secret key used in production secret! 23 SECRET_KEY = u-=+xrj*5cr+z92==pmlct&c2ta+7o8ia8_y!(ne^*538_afr1 24
25 # SECURITY WARNING: don‘t run with debug turned on in production! 26 DEBUG = True 27 28 ALLOWED_HOSTS = [] 29 30 31 # Application definition 32 33 INSTALLED_APPS = ( 34 django.contrib.admin, 35 django.contrib.auth, 36 django.contrib.contenttypes, 37 django.contrib.sessions, 38 django.contrib.messages, 39 django.contrib.staticfiles, 40 loginapp 41 ) 42 43 MIDDLEWARE_CLASSES = ( 44 django.contrib.sessions.middleware.SessionMiddleware, 45 django.middleware.common.CommonMiddleware, 46 django.middleware.csrf.CsrfViewMiddleware, 47 django.contrib.auth.middleware.AuthenticationMiddleware, 48 django.contrib.auth.middleware.SessionAuthenticationMiddleware, 49 django.contrib.messages.middleware.MessageMiddleware, 50 django.middleware.clickjacking.XFrameOptionsMiddleware, 51 django.middleware.security.SecurityMiddleware, 52 ) 53 54 ROOT_URLCONF = mysite1.urls 55 56 TEMPLATES = [ 57 { 58 BACKEND: django.template.backends.django.DjangoTemplates, 59 DIRS: [], 60 APP_DIRS: True, 61 OPTIONS: { 62 context_processors: [ 63 django.template.context_processors.debug, 64 django.template.context_processors.request, 65 django.contrib.auth.context_processors.auth, 66 django.contrib.messages.context_processors.messages, 67 ], 68 }, 69 }, 70 ] 71 72 WSGI_APPLICATION = mysite1.wsgi.application 73 74 75 # Database 76 # https://docs.djangoproject.com/en/1.8/ref/settings/#databases 77 78 DATABASES = { 79 default: { 80 ENGINE: django.db.backends.mysql, 81 NAME: mysite1, 82 USER: root, 83 HOST: 127.0.0.1, 84 PORT: 3306, 85 } 86 } 87 88 89 # Internationalization 90 # https://docs.djangoproject.com/en/1.8/topics/i18n/ 91 92 LANGUAGE_CODE = en-us 93 94 TIME_ZONE = UTC 95 96 USE_I18N = True 97 98 USE_L10N = True 99 100 USE_TZ = True 101 102 103 # Static files (CSS, JavaScript, Images) 104 # https://docs.djangoproject.com/en/1.8/howto/static-files/ 105 106 STATIC_URL = /static/

三、創建數據庫:

1 mysql -h 127.0.0.1 -u root
2 create database mysite1
3 exit

然後編輯models.py文件:

1 from django.db import models
2 
3 # Create your models here.
4 class account(models.Model):
5     username = models.CharField(max_length=20)
6     password = models.CharField(max_length=256)

然後選擇創建數據庫表結構

1 $ python manage.py migrate   # 創建表結構
2 $ python manage.py makemigrations loginapp  # 讓 Django 知道我們的模型有一些變更
3 $ python manage.py migrate loginapp   # 創建表結構

四、編寫urls.py文件:

 1 from django.conf.urls import include, url
 2 from django.contrib import admin
 3 from loginapp import views
 4 
 5 urlpatterns = [
 6     # Examples:
 7     # url(r‘^$‘, ‘mysite1.views.home‘, name=‘home‘),
 8     # url(r‘^blog/‘, include(‘blog.urls‘)),
 9 
10     url(r^admin/, include(admin.site.urls)),
11     url(r^login/, loginapp.views.login),
12     url(r^main/, loginapp.views.main),
13     url(r^logout/, loginapp.views.logout),
14 ]

五、最重要的視圖函數到了:

views.py

 1 # -*- coding:utf-8 -*-
 2 import hashlib
 3 from django.shortcuts import render
 4 from django.http import HttpResponse
 5 from models import account
 6 # Create your views here.
 7 def get_md5(text):
 8     md5 = hashlib.md5()
 9     d5.update(text)
10     return md5.hexdigest()
11 
12 def login(request):
13     user = request.GET["user"]
14     pswd = request.GET["pswd"]
15     #pswd = get_md5(pswd)
16     result = account.objects.get(username=user)
17     try:
18         if pswd == result.password:
19             response = HttpResponse("Welcome %s, Login Success!"%user)
20             response.set_cookie("login_name",user)
21             response.set_cookie("login_code",1)
22             return response
23         else:
24             return HttpResponse("Sorry,Login Failed!")
25     except Excception,ex:
26         return HttpResponse("Sorry,Login Failed!")
27             
28 
29 def main(request):
30     if "login_code" in request.COOKIES:
31         logincode = request.COOKIES["login_code"]
32         print logincode
33         print type(logincode)
34         if logincode == "1":
35             return HttpResponse("Yes , sir!")
36         else:
37             return HttpResponse("Sorry , sir!")
38 
39 def logout(request):
40     user = request.GET["user"]
41     if "login_name" in request.COOKIES:
42         if user == request.COOKIES["login_name"]:
43             response = HttpResponse("ByeBye!")
44             response.set_cookie("login_code",0)
45             return response
46         else:
47             return HttpResponse("Sorry User Error!")
48     else:
49         return HttpResponse("Sorry User Error!")

六、總結:

1、數據庫的對象應該是from modles.py import classname 這裏就是數據庫對象了,然後就是classname.objects.get或者其他操作;

2、get方法獲取的是符合條件的數據的一項,是一個數據實例,其屬性使用ret.name方式調用;

3、讀寫cookie,cookie在request.COOKIES中,字典結構,寫的事後麻煩一些,需要response = HttpResponse等一類返回響應對象的函數的返回值。然後使用response.ser_cookie(key,value)方式設置,最後return response返回;

Django學習筆記第五篇--實戰練習一--查詢數據庫並操作cookie