当前位置:Gxlcms > 数据库问题 > Django学习笔记第五篇--实战练习一--查询数据库并操作cookie

Django学习笔记第五篇--实战练习一--查询数据库并操作cookie

时间:2021-07-01 10:21:17 帮助过:18人阅读

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

标签:auth   mat   utc   color   .com   cookie   重要   manage   asc   

人气教程排行