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奇骏S改成[os.path.join(BASE_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

Django框架基础,应用软件的开创访问。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陆风X8S改成[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 (创立五个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 (创设3个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的格局是M电视):

django目录(django的形式是M电视机):

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

金沙注册送58 1

金沙注册送58 2

login.html

新建的应用程式目录缺乏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:8000(监听全数地方,监听端口7000)

命令行:python manage.py runserver
0.0.0.0:七千(监听全部地方,监听端口九千)

金沙注册送58 3

金沙注册送58 4

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

金沙注册送58,pycharm:pycharm 工具栏【Tools】–>Run manage.py
task(点击)在分界面输入:runserver 0.0.0.0:七千

肆、服务器访问

肆、服务器访问

金沙注册送58 5

金沙注册送58 6

 5、写三个最简便易行的hello,world页面

 五、写贰个最简易的hello,world页面

金沙注册送58 7金沙注册送58 8

金沙注册送58 9金沙注册送58 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

金沙注册送58 11金沙注册送58 12

金沙注册送58 13金沙注册送58 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、不用重启访问

金沙注册送58 15

金沙注册送58 16

7、动态路由

7、动态路由

金沙注册送58 17

金沙注册送58 18

金沙注册送58 19金沙注册送58 20

金沙注册送58 21金沙注册送58 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、简洁的动态路由(通过反射机制)

金沙注册送58 23金沙注册送58 24

金沙注册送58 25金沙注册送58 26

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

缘何要精简

干什么要从简

玖、数据库的连接待上访问(模型相关)

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

1.数据库配置

1.数据库配置

金沙注册送58 27金沙注册送58 28

金沙注册送58 29金沙注册送58 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实现

   一).创造数据库

   一).创造数据库

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

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

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

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

金沙注册送58 31金沙注册送58 32

金沙注册送58 33金沙注册送58 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

金沙注册送58 35金沙注册送58 36

金沙注册送58 37金沙注册送58 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字段

金沙注册送58 39金沙注册送58 40

金沙注册送58 41金沙注册送58 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

越来越多字段参数

更加多字段参数

金沙注册送58 43金沙注册送58 44

金沙注册送58 45金沙注册送58 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

金沙注册送58 47金沙注册送58 48

金沙注册送58 49金沙注册送58 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模型扩张数据库操作,新建表

金沙注册送58 51金沙注册送58 52

金沙注册送58 53金沙注册送58 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’  

金沙注册送58 55 金沙注册送58 56

金沙注册送58 57 金沙注册送58 58

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

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

金沙注册送58 59金沙注册送58 60

金沙注册送58 61金沙注册送58 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() 

表的增加和删除改查

表的增加和删除改查

金沙注册送58 63金沙注册送58 64

金沙注册送58 65金沙注册送58 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

金沙注册送58 67金沙注册送58 68

金沙注册送58 69金沙注册送58 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

金沙注册送58 71金沙注册送58 72

金沙注册送58 73金沙注册送58 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

陆). 改完后在推行四即可

陆). 改完后在执行四就能够

十、模板

十、模板

壹.运行流程图掌握

一.运作流程图掌握

 金沙注册送58 75

 金沙注册送58 76

金沙注册送58 77金沙注册送58 78

金沙注册送58 79金沙注册送58 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 }}

模板语言

模板语言

金沙注册送58 81金沙注册送58 82

金沙注册送58 83金沙注册送58 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达成模版语言中的帮忙方法

二.子母板运用:

二.子母板运用:

 金沙注册送58 85

 金沙注册送58 86

金沙注册送58 87金沙注册送58 88

金沙注册送58 89金沙注册送58 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

金沙注册送58 91金沙注册送58 92

金沙注册送58 93金沙注册送58 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

三.推抢方法: 

三.相助方法: 

金沙注册送58 95金沙注册送58 96

金沙注册送58 97金沙注册送58 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(子版)

金沙注册送58 99金沙注册送58 100

金沙注册送58 101金沙注册送58 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

施行救助方法前的成效:

实施救助方法前的效劳:

金沙注册送58 103

金沙注册送58 104

进行救助方法后的效能:

试行救助方法后的效益:

 金沙注册送58 105

 金沙注册送58 106

 

 

 十一、Django admin的使用

 十一、Django admin的使用

拾2、关于静态文件不奏效的主题素材可参看:

10贰、关于静态文件不见效的主题材料可参看:

注:依照网上的各自方法设置后仍不见效,然后便是重命名statics的文件名为common-statics然后,pycharm提醒:

注:遵照网上的各自方法设置后仍不见效,然后就是重命名statics的文件名字为common-statics然后,pycharm提醒:

金沙注册送58 107

金沙注册送58 108

然后按Do Refactor重新定位后就找着了,比较烦躁。。。

下一场按Do Refactor重新定位后就找着了,比较沉闷。。。

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

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

金沙注册送58 109

金沙注册送58 110

 

 

 

 

 

 

 

 

参考:

参考:

相关文章

网站地图xml地图