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

一、启动项目:

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返回;

原文地址:https://www.cnblogs.com/KevinGeorge/p/8364575.html

时间: 2024-10-08 10:48:29

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

Django学习笔记第八篇--实战练习四--为你的视图函数自定义装饰器

零.背景: 对于登录后面所有视图函数,都需要验证登录信息,一般而言就是验证cookie里面的一些信息.所以你可以这么写函数: 1 def personinfo(request): 2 if request.COOKIES.get("login_flag") == "1": 3 return HttpResponse("Success!") 4 else: 5 return HttpResponse("Failed!") 这样就

Django学习笔记(五)—— 表单

疯狂的暑假学习之  Django学习笔记(五)-- 表单 参考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path                                 除域名以外的请求路径,斜杠开头                      "/hello/" request.get_host()                      主机名                              

Python框架之Django学习笔记(五)

第一个Django网页小结 进来的请求转入/hello/. Django通过在ROOT_URLCONF配置来决定根URLconf. Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目. 如果找到匹配,将调用相应的视图函数. 视图函数返回一个HttpResponse. Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来. 在url映射到函数部分用到了一些正则表达式的相关知识,在http://www.cnbl

linux学习笔记第五篇

自动安装系统 1.kick脚本 kick脚本是自动应答系统在安装工程中一切问题的脚本文件这个文件可以实现系统的自动安装在系统安装完毕后会在系统的root家目录中生成 anaconda-ks.cfg 这个文件就是以此系统模板生成的kickstart 2.kickstart脚本的制作 手动编写难度很大 系统中system-config-kickstart工具可以以图形方式制作kickstart 安装图形制作工具 yum insatll system-config-kickstart -y 安装完成后

R学习笔记 第五篇:数据变换和清理

在使用R的分组操作之前,首先要了解R语言包,包实质上是实现特定功能的,预先写好的代码库(library),R拥有大量的软件包,许多包都是由某一领域的专家编写的,但并不是所有的包都有很高的质量的,在使用包之前,最好导社区中了解其他网友的反馈. 安装包,引用包和卸载包的命令分别是: install.packages("package-name") library(package-name)remove.packages("package-name") 数据分析的工作,8

Django 学习笔记(六)MySQL配置

环境:Ubuntu16.4 工具:Python3.5 一.安装MySQL数据库 终端命令: sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install libmysqlclient-dev 过程中会让你输入用户名(默认root)和密码,输入后按下方向即可跳转到确定按钮,再按Enter sudo netstat -tap | grep mysql检测是否安装成功,当处于 liste

Django 学习笔记(七)数据库基本操作(增查改删)

一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.py 5.同步数据 二.安装IPython方便debug sudo apt-get install ipython3 安装成功后用python manage.py shell 会自动进入Ipython交互解释器中,没有安装Ipython只有前两行代码,只进入到Python shell 中. Python 3.5

ZMAN的学习笔记之Python篇:装饰器

年前工作事务比较繁琐,我只能用零碎的时间继续学习Python,决定开一个系列的博文,作为自己深入学习Python的记录吧.名字也取好了,就叫<ZMAN的学习笔记之Python篇>~开篇是关于装饰器的,春节假期码的字哈哈~就让我们开始吧! 本文的例子都是自己想的,如果不是很合适,请大家提出宝贵意见哈~谢谢啦! 一.为什么要用“装饰器” 比如我们写了如下一段代码: # 打印0~99 def func(): for i in range(100): print(i) 我们想要监测执行这个函数花费了多

设计模式学习笔记(目录篇)

设计模式学习笔记(目录篇) 为了方便查看,特此将设计模式学习笔记系列单独做一个目录. 1   设计模式学习笔记(一:命令模式) 2   设计模式学习笔记(二:观察者模式) 3   设计模式学习笔记(三:装饰模式) 4   设计模式学习笔记(四:策略模式) 5   设计模式学习笔记(五:适配器模式) 6   设计模式学习笔记(六:责任链模式) 7   设计模式学习笔记(七:外观模式) 8   设计模式学习笔记(八:迭代器模式) 9   设计模式学习笔记(九:中介者模式) 10  设计模式学习笔记(