码迷,mamicode.com
首页 > 其他好文 > 详细

django上课笔记1

时间:2017-09-04 09:46:57      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:reverse   font   分发   pass   arm   models   query   python   pycha   

 一、Django目录介绍

  django-admin startproject mysite # 创建名为mysite的项目
  cd mysite # 切换到该目录下
  python manage.py starapp app01 # 创建app01业务线

  project
  - app01
  - admin Django自带后台管理相关配置
  - modal 写类,根据类创建数据库表
  - test 单元测试
  - views 业务处理
  - app02
  - app03

二、路由系统
  url和函数的对应关系

  a. /login/ -> def login # 一 一对应(静态)

  b. /add-user/(\w+)/.html/ -> def add_user(request,a1) #加正则表达式 在视图函数add_user中 a1接收url中(\w+)的内容(动态)

  c. /add-user/(?P<a1>\w+)/(?P<a2>\w+)/ -> def add_user(request,a1,a2) # 将匹配到的\w+内容赋给指定的a1和a2(不管顺序)

  d. /add-user/(?P<a1>\w+)/(?P<a2>\w+)/ -> def add_user(request,*args,**kwargs) # 万能匹配 位置参数和关键字参数

  PS:
  终止符:$
    ^edit$
  伪静态
    url(r‘^edit/(\w+).html$‘, views.edit), # .html$结尾 sel权重比较高
  e. 路由分发
    在项目的 urls.py中分发
    url(r‘^app01/‘, include(‘app01.urls‘)),
    url(r‘^app02/‘, include(‘app02.urls‘)),

    app01 urls.py
    url(r‘^index.html$‘, views.index),
    app02 urls.py
    url(r‘^index.html$‘, views.index),

  f. /add-user/(\d+)/ -> def add_user(request,a1) name=n1

    根据名称可以在 函数中 反向生成URL
    url(r‘^index/(\w+)‘, views.index,name=n1),
  1. 在Python代码中
    from django.urls import reverse
    v = reverse(‘n1‘,args=(123,))
    print(v)

    url(r‘^index/(?P<a1>\w+)‘, views.index,name=n1),
    from django.urls import reverse
    v = reverse(‘n1‘,kwargs={‘a1‘:123})
    print(v)

  2.
    url(r‘^login/‘, views.login,name=‘m1‘)
    在HTML页面中需要跳转的页面里可以直接写下面的代码代替跳转路径
    {% url "m1" %}

    {% url "m1" i %} #传值 空格加 i
三、ORM操作
  Http请求:
  url -> 视图(模板+数据)
  步骤:
1.去配置文件里更改默认设置
  DATABASES = {
  ‘default‘: {
  ‘ENGINE‘: ‘django.db.backends.mysql‘,
  ‘NAME‘:‘db3‘,
  ‘USER‘: ‘root‘,
  ‘PASSWORD‘: ‘‘,
  ‘HOST‘: ‘localhost‘,
  ‘PORT‘: ‘3306‘,
  }
  }

2.去__init__文件添加
  import pymysql
  pymysql.install_as_MySQLdb()

3.创建数据表
  在app01的models.py里边
  from django.db import models

  class UserGroup(models.Model):
  title = models.CharField(max_length=32) # 部门名称

  class UserInfo(models.Model):
  uid = models.BigAutoField(primary_key=True) #自增和主键ID(也可以不设置)
  username = models.CharField(max_length=32) #用户名
  passwd = models.CharField(max_length=64) #密码
  #age = models.IntegerField(default=1) #年龄
  age = models.ImageField(null=True) 插入一列,可以为空值
  # ug_id
  ug = models.ForeignKey(‘UserGroup‘,null=True)#外键关联部门的对应ID

去settings里注册app
  INSTALLED_APPS = [
  ‘django.contrib.admin‘,
  ‘django.contrib.auth‘,
  ‘django.contrib.contenttypes‘,
  ‘django.contrib.sessions‘,
  ‘django.contrib.messages‘,
  ‘django.contrib.staticfiles‘,

  ‘app01‘,
  ]

4.C:\Users\mu\PycharmProjects\day58mysite> 终端执行命令
  python manage.py makemigrations
  python manage.py migrate

5.数据行的增删改查
  #增
  models.UserGroup.objects.create(title=‘销售部‘) #创建数据行
  models.UserInfo.objects.create(username=‘root‘,passwd=‘123‘,age=‘20‘,ug_id=1)
  #查
  userinfo_list = models.UserInfo.objects.all() #获取数据行,为Jqueryset对象
  userinfo_list = models.UserInfo.objects.filter(uid=1,username=‘alex‘) #filter过滤
  userinfo_list = models.UserInfo.objects.filter(uid__gt=1) # uid__gt=1 #意思为 uid大于1
  userinfo_list = models.UserInfo.objects.filter(uid__lt=1) # uid__lt=1 #意思为 uid小于1
  #删
  userinfo_list = models.UserInfo.objects.filter(uid=1).delete() # 删除数据行
  #改
  userinfo_list = models.UserInfo.objects.filter(uid=1).update(username=‘egon‘) # 先过虑找出对应数据行再update更新新值

ORM利用pymysql第三方工具连接数据库
  默认:
    SQLlite
  MySQL:
    mysql -> MySQLDB(修改django默认连接mySQL方式)

 

django上课笔记1

标签:reverse   font   分发   pass   arm   models   query   python   pycha   

原文地址:http://www.cnblogs.com/guotianbao/p/7472085.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!