标签: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方式)
标签:reverse font 分发 pass arm models query python pycha
原文地址:http://www.cnblogs.com/guotianbao/p/7472085.html