Python命令

一、准备工作:
1、Python 安装;
    
2、Django 安装;(命令:pip install Django==2.0.6)
    Django将要被安装到Python的Lib下site-packages
    添加环境变量:C:\Python33\Lib\site-packages\django;

3、第一个django项目:
    django-admin startproject HelloWorld (使用 django-admin 来创建 HelloWorld 项目)

    cd进入HelloWorld文件跑起服务:python manage.py runserver 0.0.0.0:8000
    ctrl + c 终止服务

4、创建一个应用APP
    在项目HelloWorld下创建:python manage.py startapp blog

5、在项目里添加,刚才创建的blog应用:
    settings.py -> INSTALLED_APPS元组下添加 'blog',

三、Django中的Models
    一个Model ->对应数据库的一张数据表(Django中Models以类的形式表现,它包含了一些基本字段,数据的一些行为,)
    1、在APP目录models.py中创建类(即一张数据表)
        -> 在类中创建字段(字段即类里面的属性)
        -> 生成数据表,命令行进入manage.py同级目录;
        -> 执行python manage.py makemigrations app名(不写项目下所有APP都生成数据表);
        -> 再执行命令:python manage.py migrate
    2、Django会自动在app/migrations/目录下生成移植文件;执行python manage.py sqlmigrate 应用名 文件id 查看SQL语句;默认sqlite3的数据库在项目根目录下db.sqlite3

四、Django中的Admin
配置自带的Admin后台管理系统:
->创建超级用户:python manage.py createsuperuser
->Admin入口:localhost:8000/admin/
->将后台管理页面变成中文:修改settings.py中LANGUAGE_CODE = 'zh-Hans'
->在应用下admin.py中引入自身的models模块或里面的模型类(即在admin.py文件里加一行:admin.site.register(models.Article) )

五、Django连接Mysql数据库
-> pip install wheel (之后就可以安装.wh 的文件包了)
-> CMD命令进入D:\Python27\Scripts里面后再执行PIP命令安装: pip install wheel ; 把文件最好放在\Script文件夹里面再pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl(注意whl文件名不能改 必须一模一样和原名)
->在settings.py文件中设置默认连接数据库的方式(注意在文件settings.py开头加入 # -*- coding: UTF-8 -*- 或者 #coding=utf-8否则会报错)
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 数据库引擎
        'NAME': 'chatsite',    # 数据库名称
        'USER': 'root',    # 链接数据库的用户名
        'PASSWORD': 'root123',   # 链接数据库的密码
        'HOST': '127.0.0.1',   # mysql服务器的域名和ip地址
        'PORT': '3306',            # mysql的一个端口号,默认是3306
    }
}
MySQL_python-1.2.5-cp27-none-win_amd64.whl文件下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

生成数据库迁移文件:python manage.py makemigrations
产生对应的数据库表python manage.py migrate

把数据库迁移文件转换成数据库sql语言:  python manage.py sqlmigrate

六、Django--urls.py配置详解:
urls.py是url分发器,路由配置文件:在这里面我们会构建起网站的目录( 简单来说我们要做的事就是告诉Django,对于某段url该调用哪段代码 )
配置url的方式:(列表,推荐方式)
urlpatterns = [
    url ( 正则表达式,view函数,传递给视图的参数, 别名(命名空间),前缀 ),
    url ( 正则表达式,view函数,传递给视图的参数, 别名(命名空间),前缀 ),
    url ( r'^hello/$', v1.hello, {'a': 123}, name='hello' ),
]




1、创建一个项目:django-admin startproject DataHandel

2、创建一个APP:python manage.py startapp mydata ( settings.py -> INSTALLED_APPS元组下添加 'mydata', )

3、在APP的根目录下创建名叫Templates的目录 -> 在Templates目录下创建以APP为名称的目录 -> 存放所有的html页面

4、路由配置:
方法一:用户访问http://127.0.0.1:8000/index 然后后端使用index()函数处理
  ->DataHandel/urls.py内容如下:( 在urlpatterns里写入一条url与处理函数的映射关系 )
    from django.conf.urls import url
    from django.contrib import admin
    from mydata import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/$', views.index),
    ]

  ->mydata/views.py内容如下:( 在app下的views.py里添加处理函数 )
    from django.shortcuts import render
    from django.http import HttpResponse
    from . import models
    def index(request):
        # articles = models.Article.objects.all()
        # return render(request, 'mydata/index.html', {'articles': articles})
        return render(request, 'mydata/index.html', {'articles': '222'})
  ->在Templates下创建index.html页面


方法二:如果一个项目下有很多的app就要根据不同的app来分类不同的url(用户访问:http://127.0.0.1/app01/index/)
  ->DataHandel/urls.py内容如下:( 在urls.py里映射到APP下的url )
    from django.conf.urls import include, url
    from django.contrib import admin
    urlpatterns = [
      url(r'^admin/', admin.site.urls),
      url(r'^mydata/', include('mydata.urls')),
    ]

  ->在mydata下创建一个urls.py文件内容如下:( 在APP里写入一条url与处理函数的映射关系 )
  from django.conf.urls import url
  from . import views
  urlpatterns = [
      url(r'^index/$', views.index),
      # url(r'^article/(?P<article_id>[0-9]+)$', views.article_page),
  ]

  ->mydata/views.py内容如下:( 在app下的views.py里添加处理函数 )
    from django.shortcuts import render
    from django.http import HttpResponse
    from . import models
    def index(request):
        # articles = models.Article.objects.all()
        # return render(request, 'mydata/index.html', {'articles': articles})
        return render(request, 'mydata/index.html', {'articles': '222'})
  ->在Templates下创建index.html页面

七、Django增删改查
1、先建表
  ->mydata/models.py的内容如下:
  from __future__ import unicode_literals
  from django.db import models
  class user(models.Model):
      username = models.CharField(max_length=16)
      pwd = models.CharField(max_length=32)

      def __unicode__(self):
          return self.username

python manage.py makemigrations app名(不写项目下所有APP都生成数据表);
python manage.py migrate
python manage.py sqlmigrate 应用名 文件id 查看SQL语句

2、QuerySet 创建对象的方法(增)
方法 1:(返回对应的 object)
models.user.objects.create(username="小红", pwd="123123")
方法 2:(返回对应的 object)
twz = models.user(username="小红", pwd="123123")
twz.save()
方法 3:(返回对应的 object)
twz = models.user()
twz.username = "小红"
twz.pwd = "123123"
twz.save()
方法 4:
首先尝试获取,不存在就创建,可以防止重复(最后一种方法返回的是一个元组,(object, True/False),创建时返回 True, 已经存在时返回 False)
models.user.objects.get_or_create(username="小红", pwd="123123")

3、删除符合条件的结果(删)
models.user.objects.all().delete() # 删除所有记录
方法一:
models.user.objects.filter(username__contains="abc").delete() # 删除 名称中包含 "abc"的人
方法二:
twz = models.user.objects.filter(username__contains="abc")
twz.delete()

4、更新某个内容(改)
方式一:
批量更新,适用于 .all()  .filter()  .exclude() 等后面 (危险操作,正式场合操作务必谨慎)
models.user.objects.filter(name__contains="abc").update(name='xxx') 名称中包含 "abc"的人 都改成 xxx
方式二:
单个 object 更新,适合于 .get(), get_or_create(), update_or_create() 等得到的 obj,和新建很类似
twz = models.user.objects.get(username="qwer")
twz.name="abc"
twz.email="123123"
twz.save()

5、QuerySet 获取对象的方法(查)
models.user.objects.all()                                             # 查询所有
models.user.objects.get(username="abc")                               # 名称为 abc 的一条,多条会报错
models.user.objects.filter(username="abc")                            # 名称严格等于 "abc" 的人
models.user.objects.filter(username__iexact="abc")                    # 名称为 abc 但是不区分大小写,可以找到 ABC, Abc, aBC,这些都符合条件
models.user.objects.filter(username__contains="abc").exclude(age=23)  # 找出名称含有abc, 但是排除年龄是23岁的
models.user.objects.exclude(username__contains="abc")                 # 排除包含 abc 的对象

八、python字典遍历的几种方法:
1、遍历key值,value值(下面两种写法完全等价):
a = {'a': '1', 'b': '2', 'c': '3'}
for key in a:
    print(key+':'+a[key])

for key in a.keys():
    print(key+':'+a[key])
打印结果:
a:1
b:2
c:3
2、遍历value值:
for value in a.values():
    print(value)
打印结果:
1
2
3

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页