威尼斯人线上娱乐

【威尼斯人线上娱乐】依据cookie和session的报到验证,Django框架基础

15 4月 , 2019  

settings.py

依据cookie和session的报到验证,cookiesession验证

settings.py

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

诚如不要修改settings.py,然则利用模版须要修改如下:(就要TEMPLATES中的DI猎豹CS六S改成[os.path.join(BASE_【威尼斯人线上娱乐】依据cookie和session的报到验证,Django框架基础。DIR,
‘templates’)])

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS':  [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

 

urls.py

from django.urls import path
from cookie import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/',views.login),
    path('index/',views.index),
]

models.py

from django.db import models

# Create your models here.
class User(models.Model):
    user=models.CharField(max_length=20,unique=True,db_index=True)
    pwd=models.CharField(max_length=20,db_index=True)
    def __str__(self):
        return self.user

views.py

from django.shortcuts import render, redirect
from .models import User


# Create your views here.
def login(request):
    msg = ''
    if request.method == 'POST':
        name = request.POST.get("user")
        pwd = request.POST.get("pwd")
        c = User.objects.filter(user=name, pwd=pwd).count()
        if c:
            request.session['is_log'] = 111
            request.session['username'] = name
            return redirect('/index/')
        else:
            msg = '用户名或密码有误'
            return render(request, 'login.html', {'msg': msg})
    else:
        return render(request, 'login.html', {'msg': msg})


def index(request):
    print(request.session.get('is_log'))
    if request.session.get('is_log', None):
        user = request.session.get('username')
        return render(request, 'index.html', {'user': user})
    else:
        return redirect('/login/')


def bb(request):
    return redirect('/login/')

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
欢迎 {{ user }}!
</body>
</html>

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
<form action="/login/" method="post">
    {% csrf_token %}
    <div>
        <laber for="user">用户名</laber>
        <input id="user" type="text" name="user"/>
    </div>
    <div>
        <laber for="pwd">密码</laber>
        <input id="pwd" type="password" name="pwd">
    </div>
    <div>
        <input type="submit" value="登录">
    </div>
</form>
</body>
</html>

注意:由于大家将session存于数据库中因故要施行python manage.py
makemigrations 后再施行python manage.py migrate创制数据表。

settings.py MIDDLEWARE = [ ‘
django.middleware.security.SecurityMiddleware ‘ , ‘
django.contrib.sessions.middleware.Sess…

 

 

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

 一、成立项目

 壹、创立项目

相似不要修改settings.py,不过采纳模版须求修改如下:(将要TEMPLATES中的DI大切诺基S改成[os.path.join(BASE_DIR,
‘templates’)])

1.命令:django-admin startproject sitename

1.命令:django-admin startproject sitename

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS':  [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

2.IDLE环境:本质上都以奉行上述命令

2.IDLE环境:本质上都是试行上述命令

 

常用命令:

常用命令:

urls.py

  python manage.py runserver 0.0.0.0 (运维服务)
  python manage.py startapp appname (创造1个Application)
  python manage.py syncdb()
  python manage.py makemigrations()
  python manage.py migrate()

  python manage.py runserver 0.0.0.0 (运转服务)
  python manage.py startapp appname (成立一个Application)
  python manage.py syncdb()
  python manage.py makemigrations()
  python manage.py migrate()

from django.urls import path
from cookie import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/',views.login),
    path('index/',views.index),
]

  python manage.py createsuperuser (创立Django Admin登录用户)

  python manage.py createsuperuser (创立Django Admin登录用户)

models.py

 

 

from django.db import models

# Create your models here.
class User(models.Model):
    user=models.CharField(max_length=20,unique=True,db_index=True)
    pwd=models.CharField(max_length=20,db_index=True)
    def __str__(self):
        return self.user

二、创建APP(application)

二、创建APP(application)

views.py

1.指令:dos下进入项目目录实施:python manage.py startapp web(app名称)

1.一声令下:dos下进入项目目录推行:python manage.py startapp web(app名称)

from django.shortcuts import render, redirect
from .models import User


# Create your views here.
def login(request):
    msg = ''
    if request.method == 'POST':
        name = request.POST.get("user")
        pwd = request.POST.get("pwd")
        c = User.objects.filter(user=name, pwd=pwd).count()
        if c:
            request.session['is_log'] = 111
            request.session['username'] = name
            return redirect('/index/')
        else:
            msg = '用户名或密码有误'
            return render(request, 'login.html', {'msg': msg})
    else:
        return render(request, 'login.html', {'msg': msg})


def index(request):
    print(request.session.get('is_log'))
    if request.session.get('is_log', None):
        user = request.session.get('username')
        return render(request, 'index.html', {'user': user})
    else:
        return redirect('/login/')


def bb(request):
    return redirect('/login/')

2.工具:pycharm 工具栏【Tools】–>Run manage.py
task(点击)在分界面输入:startapp web(app名称)

2.工具:pycharm 工具栏【Tools】–>Run manage.py
task(点击)在分界面输入:startapp web(app名称)

index.html

django目录(django的方式是MTV):

django目录(django的情势是M电视):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
欢迎 {{ user }}!
</body>
</html>

威尼斯人线上娱乐 1

威尼斯人线上娱乐 2

login.html

新建的APP目录缺乏Template,可以行使集体的templates目录,也可依照本人的实际必要新建

新建的APP目录贫乏Template,能够利用公共的templates目录,也可依据自个儿的实在必要新建

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
<form action="/login/" method="post">
    {% csrf_token %}
    <div>
        <laber for="user">用户名</laber>
        <input id="user" type="text" name="user"/>
    </div>
    <div>
        <laber for="pwd">密码</laber>
        <input id="pwd" type="password" name="pwd">
    </div>
    <div>
        <input type="submit" value="登录">
    </div>
</form>
</body>
</html>

三、启动

三、启动

专注:由于我们将session存于数据库中之所以要实践python manage.py
makemigrations 后再实践python manage.py migrate成立数据表。

命令行:python manage.py runserver
0.0.0.0:玖仟(监听全部地点,监听端口捌仟)

命令行:python manage.py runserver
0.0.0.0:七千(监听全数地点,监听端口柒仟)

威尼斯人线上娱乐 3

威尼斯人线上娱乐 4

pycharm:pycharm 工具栏【Tools】–>Run manage.py
task(点击)在分界面输入:runserver 0.0.0.0:7000

pycharm:pycharm 工具栏【Tools】–>Run manage.py
task(点击)在界面输入:runserver 0.0.0.0:八千

4、服务器访问

四、服务器访问

威尼斯人线上娱乐 5

威尼斯人线上娱乐 6

 伍、写多个最简便易行的hello,world页面

 五、写二个最简便的hello,world页面

威尼斯人线上娱乐 7威尼斯人线上娱乐 8

威尼斯人线上娱乐 9威尼斯人线上娱乐 10

from django.shortcuts import render
#导入httpresponse请求模块
from django.http import  HttpResponse
# Create your views here.

#登录页面
def index(request):
    return HttpResponse('<h1>Hello felix</h1>')
from django.shortcuts import render
#导入httpresponse请求模块
from django.http import  HttpResponse
# Create your views here.

#登录页面
def index(request):
    return HttpResponse('<h1>Hello felix</h1>')

web\views.py

web\views.py

威尼斯人线上娱乐 11威尼斯人线上娱乐 12

威尼斯人线上娱乐 13威尼斯人线上娱乐 14

from django.conf.urls import url
from django.contrib import admin
from web.views import index

urlpatterns = [

    url(r'^admin/', admin.site.urls),
     #url映射
    url(r'^index/', index),
]
from django.conf.urls import url
from django.contrib import admin
from web.views import index

urlpatterns = [

    url(r'^admin/', admin.site.urls),
     #url映射
    url(r'^index/', index),
]

项目名称\urls.py

项目名称\urls.py

6、不用重启访问

陆、不用重启访问

威尼斯人线上娱乐 15

威尼斯人线上娱乐 16

7、动态路由

7、动态路由

威尼斯人线上娱乐 17

威尼斯人线上娱乐 18

威尼斯人线上娱乐 19威尼斯人线上娱乐 20

威尼斯人线上娱乐 21威尼斯人线上娱乐 22

1、每个路由规则对应一个view中的函数
url(r'^index/(\d*)', views.index),
url(r'^manage/(?P<name>\w*)/(?P<id>\d*)', views.manage),
url(r'^manage/(?P<name>\w*)', views.manage,{'id':333}),
2、根据app对路由规则进行一次分类
url(r'^web/',include('web.urls')),
1、每个路由规则对应一个view中的函数
url(r'^index/(\d*)', views.index),
url(r'^manage/(?P<name>\w*)/(?P<id>\d*)', views.manage),
url(r'^manage/(?P<name>\w*)', views.manage,{'id':333}),
2、根据app对路由规则进行一次分类
url(r'^web/',include('web.urls')),

连锁代码

有关代码

 8、简洁的动态路由(通过反射机制)

 8、简洁的动态路由(通过反射机制)

威尼斯人线上娱乐 23威尼斯人线上娱乐 24

威尼斯人线上娱乐 25威尼斯人线上娱乐 26

django中的路由系统和其他语言的框架有所不同,在django中每一个请求的url都要有一条路由映射,这样才能将请求交给对一个的view中的函数去处理。其他大部分的Web框架则是对一类的url请求做一条路由映射,从而是路由系统变得简洁
django中的路由系统和其他语言的框架有所不同,在django中每一个请求的url都要有一条路由映射,这样才能将请求交给对一个的view中的函数去处理。其他大部分的Web框架则是对一类的url请求做一条路由映射,从而是路由系统变得简洁

何以要轻便

缘何要言必有中

九、数据库的连日访问(模型相关)

9、数据库的总是访问(模型相关)

威尼斯人线上娱乐,1.数据库配置

1.数据库配置

威尼斯人线上娱乐 27威尼斯人线上娱乐 28

威尼斯人线上娱乐 29威尼斯人线上娱乐 30

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'test',
    'USER': 'felix',
    'PASSWORD': '123456',
    'HOST': '192.168.189.132',
    'PORT': '3306',
    }
}
DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'test',
    'USER': 'felix',
    'PASSWORD': '123456',
    'HOST': '192.168.189.132',
    'PORT': '3306',
    }
}

settings.py

settings.py

2.Codefist实现

2.Codefist实现

   一).创制数据库

   1).创设数据库

   二).配置文件settings.py连接数据库

   二).配置文件settings.py连接数据库

 3).创建model,继承自modes.Model类:

 3).创建model,继承自modes.Model类:

威尼斯人线上娱乐 31威尼斯人线上娱乐 32

威尼斯人线上娱乐 33威尼斯人线上娱乐 34

from django.db import models

class userinfo(models.Model):
    name = models.CharField(max_length=30)
    email = models.EmailField()
    memo = models.TextField()
from django.db import models

class userinfo(models.Model):
    name = models.CharField(max_length=30)
    email = models.EmailField()
    memo = models.TextField()

创建model

创建model

威尼斯人线上娱乐 35威尼斯人线上娱乐 36

威尼斯人线上娱乐 37威尼斯人线上娱乐 38

1、models.AutoField  自增列 = int(11)
  如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。
2、models.CharField  字符串字段
  必须 max_length 参数
3、models.BooleanField  布尔类型=tinyint(1)
  不能为空,Blank=True
4、models.ComaSeparatedIntegerField  用逗号分割的数字=varchar
  继承CharField,所以必须 max_lenght 参数
5、models.DateField  日期类型 date
  对于参数,auto_now = True 则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。
6、models.DateTimeField  日期类型 datetime
  同DateField的参数
7、models.Decimal  十进制小数类型 = decimal
  必须指定整数位max_digits和小数位decimal_places
8、models.EmailField  字符串类型(正则表达式邮箱) =varchar
  对字符串进行正则表达式
9、models.FloatField  浮点类型 = double
10、models.IntegerField  整形
11、models.BigIntegerField  长整形
  integer_field_ranges = {
    'SmallIntegerField': (-32768, 32767),
    'IntegerField': (-2147483648, 2147483647),
    'BigIntegerField': (-9223372036854775808, 9223372036854775807),
    'PositiveSmallIntegerField': (0, 32767),
    'PositiveIntegerField': (0, 2147483647),
  }
12、models.IPAddressField  字符串类型(ip4正则表达式)
13、models.GenericIPAddressField  字符串类型(ip4和ip6是可选的)
  参数protocol可以是:both、ipv4、ipv6
  验证时,会根据设置报错
14、models.NullBooleanField  允许为空的布尔类型
15、models.PositiveIntegerFiel  正Integer
16、models.PositiveSmallIntegerField  正smallInteger
17、models.SlugField  减号、下划线、字母、数字
18、models.SmallIntegerField  数字
  数据库中的字段有:tinyint、smallint、int、bigint
19、models.TextField  字符串=longtext
20、models.TimeField  时间 HH:MM[:ss[.uuuuuu]]
21、models.URLField  字符串,地址正则表达式
22、models.BinaryField  二进制<br>23、models.ImageField   图片<br>24、models.FilePathField 文件
1、models.AutoField  自增列 = int(11)
  如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。
2、models.CharField  字符串字段
  必须 max_length 参数
3、models.BooleanField  布尔类型=tinyint(1)
  不能为空,Blank=True
4、models.ComaSeparatedIntegerField  用逗号分割的数字=varchar
  继承CharField,所以必须 max_lenght 参数
5、models.DateField  日期类型 date
  对于参数,auto_now = True 则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。
6、models.DateTimeField  日期类型 datetime
  同DateField的参数
7、models.Decimal  十进制小数类型 = decimal
  必须指定整数位max_digits和小数位decimal_places
8、models.EmailField  字符串类型(正则表达式邮箱) =varchar
  对字符串进行正则表达式
9、models.FloatField  浮点类型 = double
10、models.IntegerField  整形
11、models.BigIntegerField  长整形
  integer_field_ranges = {
    'SmallIntegerField': (-32768, 32767),
    'IntegerField': (-2147483648, 2147483647),
    'BigIntegerField': (-9223372036854775808, 9223372036854775807),
    'PositiveSmallIntegerField': (0, 32767),
    'PositiveIntegerField': (0, 2147483647),
  }
12、models.IPAddressField  字符串类型(ip4正则表达式)
13、models.GenericIPAddressField  字符串类型(ip4和ip6是可选的)
  参数protocol可以是:both、ipv4、ipv6
  验证时,会根据设置报错
14、models.NullBooleanField  允许为空的布尔类型
15、models.PositiveIntegerFiel  正Integer
16、models.PositiveSmallIntegerField  正smallInteger
17、models.SlugField  减号、下划线、字母、数字
18、models.SmallIntegerField  数字
  数据库中的字段有:tinyint、smallint、int、bigint
19、models.TextField  字符串=longtext
20、models.TimeField  时间 HH:MM[:ss[.uuuuuu]]
21、models.URLField  字符串,地址正则表达式
22、models.BinaryField  二进制<br>23、models.ImageField   图片<br>24、models.FilePathField 文件

更多model字段

更多model字段

威尼斯人线上娱乐 39威尼斯人线上娱乐 40

威尼斯人线上娱乐 41威尼斯人线上娱乐 42

1、null=True
  数据库中字段是否可以为空
2、blank=True
  django的 Admin 中添加数据时是否可允许空值
3、primary_key = False
  主键,对AutoField设置主键后,就会代替原来的自增 id 列
4、auto_now 和 auto_now_add
  auto_now   自动创建---无论添加或修改,都是当前操作的时间
  auto_now_add  自动创建---永远是创建时的时间
5、choices
GENDER_CHOICE = (
        (u'M', u'Male'),
        (u'F', u'Female'),
    )
gender = models.CharField(max_length=2,choices = GENDER_CHOICE)
6、max_length
7、default  默认值
8、verbose_name  Admin中字段的显示名称
9、name|db_column  数据库中的字段名称
10、unique=True  不允许重复
11、db_index = True  数据库索引
12、editable=True  在Admin里是否可编辑
13、error_messages=None  错误提示
14、auto_created=False  自动创建
15、help_text  在Admin中提示帮助信息
16、validators=[]
17、upload-to
1、null=True
  数据库中字段是否可以为空
2、blank=True
  django的 Admin 中添加数据时是否可允许空值
3、primary_key = False
  主键,对AutoField设置主键后,就会代替原来的自增 id 列
4、auto_now 和 auto_now_add
  auto_now   自动创建---无论添加或修改,都是当前操作的时间
  auto_now_add  自动创建---永远是创建时的时间
5、choices
GENDER_CHOICE = (
        (u'M', u'Male'),
        (u'F', u'Female'),
    )
gender = models.CharField(max_length=2,choices = GENDER_CHOICE)
6、max_length
7、default  默认值
8、verbose_name  Admin中字段的显示名称
9、name|db_column  数据库中的字段名称
10、unique=True  不允许重复
11、db_index = True  数据库索引
12、editable=True  在Admin里是否可编辑
13、error_messages=None  错误提示
14、auto_created=False  自动创建
15、help_text  在Admin中提示帮助信息
16、validators=[]
17、upload-to

更加多字段参数

越多字段参数

威尼斯人线上娱乐 43威尼斯人线上娱乐 44

威尼斯人线上娱乐 45威尼斯人线上娱乐 46

一对多,models.ForeignKey(ColorDic)
一对一,models.OneToOneField(OneModel)
多对多,authors = models.ManyToManyField(Author)
应用场景:
一对一:在某表中创建一行数据时,有一个单选的下拉框(下拉框中的内容被用过一次就消失了)。
例如:原有含10列数据的一张表保存相关信息,经过一段时间之后,10列无法满足需求,需要为原来的表再添加5列数据。
一对多:当一张表中创建一行数据时,有一个单选的下拉框(可以被重复选择)。
例如:创建用户信息时候,需要选择一个用户类型【普通用户】【金牌用户】【铂金用户】等。
多对多:在某表中创建一行数据是,有一个可以多选的下拉框。
例如:创建用户信息,需要为用户指定多个爱好。
一对多,models.ForeignKey(ColorDic)
一对一,models.OneToOneField(OneModel)
多对多,authors = models.ManyToManyField(Author)
应用场景:
一对一:在某表中创建一行数据时,有一个单选的下拉框(下拉框中的内容被用过一次就消失了)。
例如:原有含10列数据的一张表保存相关信息,经过一段时间之后,10列无法满足需求,需要为原来的表再添加5列数据。
一对多:当一张表中创建一行数据时,有一个单选的下拉框(可以被重复选择)。
例如:创建用户信息时候,需要选择一个用户类型【普通用户】【金牌用户】【铂金用户】等。
多对多:在某表中创建一行数据是,有一个可以多选的下拉框。
例如:创建用户信息,需要为用户指定多个爱好。

库中表与表的关联

库中表与表的涉嫌

   4).python manage.py makemigrations  ; python manage.py migrate

   4).python manage.py makemigrations  ; python manage.py migrate

威尼斯人线上娱乐 47威尼斯人线上娱乐 48

威尼斯人线上娱乐 49威尼斯人线上娱乐 50

class UserInfo(models.Model):
    username = models.CharField(max_length=50)
    password = models.CharField(max_length=50)
    gender = models.BooleanField(default=False)
    age = models.IntegerField(default=19)
    memo = models.TextField(default='xxx')
    createdate = models.DateTimeField(default='2017-09-30')
class UserInfo(models.Model):
    username = models.CharField(max_length=50)
    password = models.CharField(max_length=50)
    gender = models.BooleanField(default=False)
    age = models.IntegerField(default=19)
    memo = models.TextField(default='xxx')
    createdate = models.DateTimeField(default='2017-09-30')

models.py模型扩展数据库操作,新建表

models.py模型扩张数据库操作,新建表

威尼斯人线上娱乐 51威尼斯人线上娱乐 52

威尼斯人线上娱乐 53威尼斯人线上娱乐 54

执行遇到的错误解决:
错误:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'.
Did you install mysqlclient or MySQL-python?
解决(python3.6 连接mysql数据库):
参考:http://www.cnblogs.com/hank-chen/p/6624299.html
由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 pymysql 模块。
pymysql 模块可以通过 pip 安装。但如果你使用的是 pycharm IDE,则可以使用 project python 安装第三方模块。
[File] >> [settings] >> [Project: python] >> [Project Interpreter] >> [Install按钮]

此时django要想访问数据库?在__init_.py下增加以下内容:
import pymysql
pymysql.install_as_MySQLdb()
执行遇到的错误解决:
错误:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'.
Did you install mysqlclient or MySQL-python?
解决(python3.6 连接mysql数据库):
参考:http://www.cnblogs.com/hank-chen/p/6624299.html
由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 pymysql 模块。
pymysql 模块可以通过 pip 安装。但如果你使用的是 pycharm IDE,则可以使用 project python 安装第三方模块。
[File] >> [settings] >> [Project: python] >> [Project Interpreter] >> [Install按钮]

此时django要想访问数据库?在__init_.py下增加以下内容:
import pymysql
pymysql.install_as_MySQLdb()

No module named ‘MySQLdb’  

No module named ‘MySQLdb’  

威尼斯人线上娱乐 55 威尼斯人线上娱乐 56

威尼斯人线上娱乐 57 威尼斯人线上娱乐 58

5).修改model(增、删、改、查)

5).修改model(增、删、改、查)

威尼斯人线上娱乐 59威尼斯人线上娱乐 60

威尼斯人线上娱乐 61威尼斯人线上娱乐 62

增加:创建实例,并调用save
更新:a.获取实例,再sava;b.update(指定列)
删除:a. filter().delete(); b.all().delete()
获取:a. 单个=get(id=1) ;b. 所有 = all()
过滤:filter(name='xxx');filter(name__contains='');(id__in = [1,2,3]) ;
icontains(大小写无关的LIKE),startswith和endswith, 还有range(SQLBETWEEN查询)'gt', 'in', 'isnull', 'endswith', 'contains', 'lt', 'startswith', 'iendswith', 'icontains','range', 'istartswith'
排序:order_by("name") =asc ;order_by("-name")=desc
返回第n-m条:第n条[0];前两条[0:2]
指定映射:values
数量:count()
聚合:from django.db.models import Min,Max,Sum objects.all().aggregate(Max('guest_id'))
原始SQL
cursor = connection.cursor()
cursor.execute('''SELECT DISTINCT first_name ROM people_person WHERE last_name = %s""", ['Lennon'])
row = cursor.fetchone() 
增加:创建实例,并调用save
更新:a.获取实例,再sava;b.update(指定列)
删除:a. filter().delete(); b.all().delete()
获取:a. 单个=get(id=1) ;b. 所有 = all()
过滤:filter(name='xxx');filter(name__contains='');(id__in = [1,2,3]) ;
icontains(大小写无关的LIKE),startswith和endswith, 还有range(SQLBETWEEN查询)'gt', 'in', 'isnull', 'endswith', 'contains', 'lt', 'startswith', 'iendswith', 'icontains','range', 'istartswith'
排序:order_by("name") =asc ;order_by("-name")=desc
返回第n-m条:第n条[0];前两条[0:2]
指定映射:values
数量:count()
聚合:from django.db.models import Min,Max,Sum objects.all().aggregate(Max('guest_id'))
原始SQL
cursor = connection.cursor()
cursor.execute('''SELECT DISTINCT first_name ROM people_person WHERE last_name = %s""", ['Lennon'])
row = cursor.fetchone() 

表的增加和删除改查

表的增加和删除改查

威尼斯人线上娱乐 63威尼斯人线上娱乐 64

威尼斯人线上娱乐 65威尼斯人线上娱乐 66

"""oldboy08day11 URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
from web.views import index,login,list,add,delete,piliang_update,update,get

#路由系统
urlpatterns = [

    url(r'^admin/', admin.site.urls),

    #url映射,url对应函数
    url(r'^index/', index),
    url(r'^login/', login),
    #动态的URL(配合正则表达式)
    # url(r'^list/(\d*)', list),
    # url(r'^list/(\d*)/(\d*)', list1),
    url(r'^add/(?P<name>\d*)/', add),
    url(r'^delete/(?P<id>\d*)/', delete),
    url(r'^update/(?P<id>\d*)/(?P<hostname>\w*)/$', update),
    url(r'^piliang_update/(?P<id>\d*)/(?P<hostname>\w*)/$', piliang_update),
    url(r'^get/(?P<hostname>\w*)/$', get),

]
"""oldboy08day11 URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
from web.views import index,login,list,add,delete,piliang_update,update,get

#路由系统
urlpatterns = [

    url(r'^admin/', admin.site.urls),

    #url映射,url对应函数
    url(r'^index/', index),
    url(r'^login/', login),
    #动态的URL(配合正则表达式)
    # url(r'^list/(\d*)', list),
    # url(r'^list/(\d*)/(\d*)', list1),
    url(r'^add/(?P<name>\d*)/', add),
    url(r'^delete/(?P<id>\d*)/', delete),
    url(r'^update/(?P<id>\d*)/(?P<hostname>\w*)/$', update),
    url(r'^piliang_update/(?P<id>\d*)/(?P<hostname>\w*)/$', piliang_update),
    url(r'^get/(?P<hostname>\w*)/$', get),

]

代码:web\urls.py

代码:web\urls.py

威尼斯人线上娱乐 67威尼斯人线上娱乐 68

威尼斯人线上娱乐 69威尼斯人线上娱乐 70

from django.shortcuts import render
#导入httpresponse请求模块
from django.http import  HttpResponse
#对数据库表进行操作
from web.models import Asset
# Create your views here.

#登录页面
def index(request):
    return HttpResponse('<h1>Hello World!!!</h1>')

def login(request):
    return HttpResponse('<h1>Hello World!!!</h1>')

def list(request,id):
    print(id)
    return HttpResponse('<h1>list</h1>')

#对数据库表进行操作
def add(request,name):
    Asset.objects.create(hostname=name)
    return HttpResponse('add ok')

#删除
def delete(request,id):
    Asset.objects.get(id=id).delete()
    return HttpResponse('delete ok')
#修改
def update(request,id,hostname):
    obj = Asset.objects.get(id=id)
    obj.hostname = hostname
    obj.save()
    return HttpResponse('update ok')
#批量修改
def piliang_update(request,id,hostname):
    Asset.objects.filter(id__gt=id).update(hostname=hostname)
    return HttpResponse('piliang_update ok')

#模糊查找
def get(request,hostname):
    assetlist = Asset.objects.filter(hostname__contains=hostname)
    print(assetlist)
    return HttpResponse('GET ok')

#需求一、获取所有的数据 (通过filter id>0)
#方法一:
def get_all(request,hostname):
    assetlist = Asset.objects.filter(id__gt=0)
    print(assetlist) #界面暂时无法不显示,先打印分析
    return HttpResponse('GET_all ok')
#方法2:
def get_alldata(request,hostname):
    assetlist = Asset.objects.all()
    assetlist = Asset.objects.all().values('id') #取某一个字段
    print(assetlist) #界面暂时无法不显示,先打印分析
    print(assetlist.query) #打印select语句
    return HttpResponse('get_alldata ok')
#需求二、获取所有数据的前两行
def get_alldata_2row(request,hostname):
    assetlist = Asset.objects.all()[0:2]
    print(assetlist) #界面暂时无法不显示,先打印分析
    return HttpResponse('get_alldata_2row ok')

#需求三、排序
def get_alldata_orderby(request,hostname):
    assetlist = Asset.objects.all().order_by('-id') #横杠指倒叙
    print(assetlist) #界面暂时无法不显示,先打印分析
    return HttpResponse('get_alldata_orderby ok')
from django.shortcuts import render
#导入httpresponse请求模块
from django.http import  HttpResponse
#对数据库表进行操作
from web.models import Asset
# Create your views here.

#登录页面
def index(request):
    return HttpResponse('<h1>Hello World!!!</h1>')

def login(request):
    return HttpResponse('<h1>Hello World!!!</h1>')

def list(request,id):
    print(id)
    return HttpResponse('<h1>list</h1>')

#对数据库表进行操作
def add(request,name):
    Asset.objects.create(hostname=name)
    return HttpResponse('add ok')

#删除
def delete(request,id):
    Asset.objects.get(id=id).delete()
    return HttpResponse('delete ok')
#修改
def update(request,id,hostname):
    obj = Asset.objects.get(id=id)
    obj.hostname = hostname
    obj.save()
    return HttpResponse('update ok')
#批量修改
def piliang_update(request,id,hostname):
    Asset.objects.filter(id__gt=id).update(hostname=hostname)
    return HttpResponse('piliang_update ok')

#模糊查找
def get(request,hostname):
    assetlist = Asset.objects.filter(hostname__contains=hostname)
    print(assetlist)
    return HttpResponse('GET ok')

#需求一、获取所有的数据 (通过filter id>0)
#方法一:
def get_all(request,hostname):
    assetlist = Asset.objects.filter(id__gt=0)
    print(assetlist) #界面暂时无法不显示,先打印分析
    return HttpResponse('GET_all ok')
#方法2:
def get_alldata(request,hostname):
    assetlist = Asset.objects.all()
    assetlist = Asset.objects.all().values('id') #取某一个字段
    print(assetlist) #界面暂时无法不显示,先打印分析
    print(assetlist.query) #打印select语句
    return HttpResponse('get_alldata ok')
#需求二、获取所有数据的前两行
def get_alldata_2row(request,hostname):
    assetlist = Asset.objects.all()[0:2]
    print(assetlist) #界面暂时无法不显示,先打印分析
    return HttpResponse('get_alldata_2row ok')

#需求三、排序
def get_alldata_orderby(request,hostname):
    assetlist = Asset.objects.all().order_by('-id') #横杠指倒叙
    print(assetlist) #界面暂时无法不显示,先打印分析
    return HttpResponse('get_alldata_orderby ok')

代码:web\views.py

代码:web\views.py

威尼斯人线上娱乐 71威尼斯人线上娱乐 72

威尼斯人线上娱乐 73威尼斯人线上娱乐 74

from django.db import models

# Create your models here.


class UserInfo(models.Model):
    username = models.CharField(max_length=50)
    password = models.CharField(max_length=50)
    gender = models.BooleanField(default=False)
    age = models.IntegerField(default=19)
    memo = models.TextField(default='xxx')
    createdate = models.DateTimeField(default='2017-09-30')

#字段参数
class Args(models.Model):
    name = models.CharField(max_length=20,null=True)
    not_name = models.CharField(max_length=30,null=False)

#通过auto_now等参数,以后数据新增更新的时候系统会自动补时间
class Asset(models.Model):
    hostname = models.CharField(max_length=256)
    create_date = models.DateTimeField(auto_now_add=True)
    update_date = models.DateTimeField(auto_now=True)

#会自动为usertype自动不填1,2,3,
class Temp(models.Model):
    GENDER_CHOICE = ((u'1',u'普通用户'),(u'2',u'管理员'),(u'3',u'超级用户'))
    usetype= models.CharField(max_length=2,choices=GENDER_CHOICE)
from django.db import models

# Create your models here.


class UserInfo(models.Model):
    username = models.CharField(max_length=50)
    password = models.CharField(max_length=50)
    gender = models.BooleanField(default=False)
    age = models.IntegerField(default=19)
    memo = models.TextField(default='xxx')
    createdate = models.DateTimeField(default='2017-09-30')

#字段参数
class Args(models.Model):
    name = models.CharField(max_length=20,null=True)
    not_name = models.CharField(max_length=30,null=False)

#通过auto_now等参数,以后数据新增更新的时候系统会自动补时间
class Asset(models.Model):
    hostname = models.CharField(max_length=256)
    create_date = models.DateTimeField(auto_now_add=True)
    update_date = models.DateTimeField(auto_now=True)

#会自动为usertype自动不填1,2,3,
class Temp(models.Model):
    GENDER_CHOICE = ((u'1',u'普通用户'),(u'2',u'管理员'),(u'3',u'超级用户'))
    usetype= models.CharField(max_length=2,choices=GENDER_CHOICE)

代码:web\modes.py

代码:web\modes.py

六). 改完后在实行四就可以

陆). 改完后在实行四就可以

十、模板

十、模板

一.运行流程图驾驭

一.运作流程图掌握

 威尼斯人线上娱乐 75

 威尼斯人线上娱乐 76

威尼斯人线上娱乐 77威尼斯人线上娱乐 78

威尼斯人线上娱乐 79威尼斯人线上娱乐 80

模板中也有自己的语言,该语言可以实现数据展示

{{ item }}

{% for item in item_list %}  
    <a>{{ item }}</a> 
{% endfor %}

  forloop.counter
  forloop.first
  forloop.last 
{% if ordered_warranty %}  
{% else %} 
{% endif %}
母板:{% block title %} {% endblock %}
子板:{% extends "base.html" %}
   {% block title %} {% endblock %}
帮助方法:
{{ item.event_start|date:"Y-m-d H:i:s"}}
{{ bio|truncatewords:"30" }}
{{ my_list|first|upper }}
{{ name|lower }}
模板中也有自己的语言,该语言可以实现数据展示

{{ item }}

{% for item in item_list %}  
    <a>{{ item }}</a> 
{% endfor %}

  forloop.counter
  forloop.first
  forloop.last 
{% if ordered_warranty %}  
{% else %} 
{% endif %}
母板:{% block title %} {% endblock %}
子板:{% extends "base.html" %}
   {% block title %} {% endblock %}
帮助方法:
{{ item.event_start|date:"Y-m-d H:i:s"}}
{{ bio|truncatewords:"30" }}
{{ my_list|first|upper }}
{{ name|lower }}

模板语言

模板语言

威尼斯人线上娱乐 81威尼斯人线上娱乐 82

威尼斯人线上娱乐 83威尼斯人线上娱乐 84

a、在app中创建templatetags文件夹

b、创建任意 .py 文件,如:xxx.py
#!/usr/local/bin/python3
#-*-coding:utf-8 -*-
#Author:Felix Song ;Environment:pycharm 5.0.3(python3.6)

from django import template
from django.utils.safestring import mark_safe
from django.template.base import resolve_variable, Node, TemplateSyntaxError

register = template.Library()

@register.simple_tag
def my_method(v1):
    return  v1*1000

@register.simple_tag
def my_input(id,arg):
    result = "<input type='text' id='%s' class='%s' />" %(id,arg,)
    return mark_safe(result)
c、在使用自定义simple_tag的html文件中导入之前创建的 xx.py 文件名,放置位置如下
<!DOCTYPE html>
{% load xxx %} 
<html lang="en">

d、使用simple_tag(多个参数可用空格隔开)
{% 帮助方法名称 参数 %}
{% my_input 'id_username' 'hide'%}

e、再settings中配置当前app,不然django无法找到自定义的simple_tag
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    '自己的APP名称',
)
a、在app中创建templatetags文件夹

b、创建任意 .py 文件,如:xxx.py
#!/usr/local/bin/python3
#-*-coding:utf-8 -*-
#Author:Felix Song ;Environment:pycharm 5.0.3(python3.6)

from django import template
from django.utils.safestring import mark_safe
from django.template.base import resolve_variable, Node, TemplateSyntaxError

register = template.Library()

@register.simple_tag
def my_method(v1):
    return  v1*1000

@register.simple_tag
def my_input(id,arg):
    result = "<input type='text' id='%s' class='%s' />" %(id,arg,)
    return mark_safe(result)
c、在使用自定义simple_tag的html文件中导入之前创建的 xx.py 文件名,放置位置如下
<!DOCTYPE html>
{% load xxx %} 
<html lang="en">

d、使用simple_tag(多个参数可用空格隔开)
{% 帮助方法名称 参数 %}
{% my_input 'id_username' 'hide'%}

e、再settings中配置当前app,不然django无法找到自定义的simple_tag
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    '自己的APP名称',
)

通过simple_tag完成模版语言中的支持方法

通过simple_tag完毕模版语言中的接济方法

二.子母板运用:

贰.子母板运用:

 威尼斯人线上娱乐 85

 威尼斯人线上娱乐 86

威尼斯人线上娱乐 87威尼斯人线上娱乐 88

威尼斯人线上娱乐 89威尼斯人线上娱乐 90

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>主页面</title>
</head>
<body>
    <div>公用的头部</div>
    <div>
        {% block content %}

        {% endblock %}
    </div>
    <div>公用的底部</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>主页面</title>
</head>
<body>
    <div>公用的头部</div>
    <div>
        {% block content %}

        {% endblock %}
    </div>
    <div>公用的底部</div>
</body>
</html>

母版:base.html

母版:base.html

威尼斯人线上娱乐 91威尼斯人线上娱乐 92

威尼斯人线上娱乐 93威尼斯人线上娱乐 94

{% extends 'base.html' %}
{% block content %}
 {# 将定义的用户数据传入#}
    <h1>{{ user }}</h1>
    {#将数据库获取的数据传入#}
    <table border="2" >
        {#运用模板#}
        {% for item in data %}
             <tr>
                <td>{{  item.id }}</td>
                {#<td>{%  my_method item.id %}</td>#}
                <td>{{ item.hostname }}</td>
                <td>{{ item.create_date|date:"Y-m-d H:i:s" }}</td>
                <td>{{ item.update_date|date:"Y-m-d H:i:s" }}</td>
            </tr>
        {% endfor %}
    </table>
     {% if user %}
            <h1>真</h1>
        {% else %}
            <h1>假</h1>
        {% endif %}
{% endblock %}
{% extends 'base.html' %}
{% block content %}
 {# 将定义的用户数据传入#}
    <h1>{{ user }}</h1>
    {#将数据库获取的数据传入#}
    <table border="2" >
        {#运用模板#}
        {% for item in data %}
             <tr>
                <td>{{  item.id }}</td>
                {#<td>{%  my_method item.id %}</td>#}
                <td>{{ item.hostname }}</td>
                <td>{{ item.create_date|date:"Y-m-d H:i:s" }}</td>
                <td>{{ item.update_date|date:"Y-m-d H:i:s" }}</td>
            </tr>
        {% endfor %}
    </table>
     {% if user %}
            <h1>真</h1>
        {% else %}
            <h1>假</h1>
        {% endif %}
{% endblock %}

子版:index.html

子版:index.html

叁.帮助方法: 

3.增派方法: 

威尼斯人线上娱乐 95威尼斯人线上娱乐 96

威尼斯人线上娱乐 97威尼斯人线上娱乐 98

{% extends 'base.html' %}
{% block content %}
{% load help_method %}
 {# 将定义的用户数据传入#}
    <h1>{{ user }}</h1>
    {#将数据库获取的数据传入#}
    <table border="2" >
        {#运用模板#}
        {% for item in data %}
             <tr>
{#                <td>{{  item.id }}</td>#}
                <td>{%  my_method item.id %}</td>
                <td>{{ item.hostname }}</td>
                <td>{{ item.create_date|date:"Y-m-d H:i:s" }}</td>
                <td>{{ item.update_date|date:"Y-m-d H:i:s" }}</td>
            </tr>
        {% endfor %}
    </table>
     {% if user %}
            <h1>真</h1>
        {% else %}
            <h1>假</h1>
        {% endif %}
{% endblock %}
{% extends 'base.html' %}
{% block content %}
{% load help_method %}
 {# 将定义的用户数据传入#}
    <h1>{{ user }}</h1>
    {#将数据库获取的数据传入#}
    <table border="2" >
        {#运用模板#}
        {% for item in data %}
             <tr>
{#                <td>{{  item.id }}</td>#}
                <td>{%  my_method item.id %}</td>
                <td>{{ item.hostname }}</td>
                <td>{{ item.create_date|date:"Y-m-d H:i:s" }}</td>
                <td>{{ item.update_date|date:"Y-m-d H:i:s" }}</td>
            </tr>
        {% endfor %}
    </table>
     {% if user %}
            <h1>真</h1>
        {% else %}
            <h1>假</h1>
        {% endif %}
{% endblock %}

templates\index.html(子版)

templates\index.html(子版)

威尼斯人线上娱乐 99威尼斯人线上娱乐 100

威尼斯人线上娱乐 101威尼斯人线上娱乐 102

#!/usr/local/bin/python3
#-*-coding:utf-8 -*-
#Author:Felix Song ;Environment:pycharm 5.0.3(python3.6)

from django import template
from django.utils.safestring import mark_safe
# from django.template.base import resolve_variable, Node, TemplateSyntaxError

register = template.Library()
@register.simple_tag
def my_method(v1):
    return  v1*1000
#!/usr/local/bin/python3
#-*-coding:utf-8 -*-
#Author:Felix Song ;Environment:pycharm 5.0.3(python3.6)

from django import template
from django.utils.safestring import mark_safe
# from django.template.base import resolve_variable, Node, TemplateSyntaxError

register = template.Library()
@register.simple_tag
def my_method(v1):
    return  v1*1000

zyxt\templatestags\help_method.py

zyxt\templatestags\help_method.py

实施救助方法前的效率:

推行救助方法前的效力:

威尼斯人线上娱乐 103

威尼斯人线上娱乐 104

试行救助方法后的效用:

实施救助方法后的意义:

 威尼斯人线上娱乐 105

 威尼斯人线上娱乐 106

 

 

 十一、Django admin的使用

 十一、Django admin的使用

102、关于静态文件不奏效的题目可参照:

十二、关于静态文件不见效的题目可参照:

注:依据网上的个别方法设置后仍不见效,然后即是重命名statics的文件名字为common-statics然后,pycharm提醒:

注:遵照网上的个别方法设置后仍不见效,然后就是重命名statics的文件名称叫common-statics然后,pycharm提醒:

威尼斯人线上娱乐 107

威尼斯人线上娱乐 108

接下来按Do Refactor重新定位后就找着了,相比窝火。。。

接下来按Do Refactor重新定位后就找着了,相比窝火。。。

重新命名完的setting.py内容:

重新命名完的setting.py内容:

威尼斯人线上娱乐 109

威尼斯人线上娱乐 110

 

 

 

 

 

 

 

 

参考:

参考:


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图