zoukankan      html  css  js  c++  java
  • Django小范围傻瓜总结

    1.母版:

      layout.html
      {% block x %}{% endblock %}

    2.子版:

      {% extends 'layout' %}
      {% block x %}.......{% endblock %}

    3.Cookie

      在浏览器上保持的键值对,参数(超时时间,域名)

      服务器写Cookie:
      #obj=HttpReponse(...)
      #obj=render(...)
      obj=redirect(...) #不一定是redirect三个中的任意一个都行
      obj.set_cookie(k1,v1,max_age) #max_age超时时间,过了这个时间就消失了
      obj.set_signed_cookie(k1,v1,max_age,salt='fff') #加盐版
      获取Cookie:
      request.COOKIES.get('k1')
      request.get_signed_cookie('k1'.salt='fff') #接收加盐版Cookie
      Cookie作用登录和限制操作次数(投票)

    4.BootStrap响应式布局@media

    5.后台管理页面布局

      左面菜单栏占200多,右边全占用
      position:absolute;
      overlow:scroll;

      <div class='div1'>
      <span class='span1'>abc</span>
      </div>
      .div1:hover .span1{
      当鼠标移动到父标签div的时候他的孩子span发生想要的变化
      }

      position中三个属性:absolute,relative,fixed

    之前:自己建立app01 自己创建目录-view.py 用SQLHelper封装SQL操作
    这些工作django都已经内部做好了,今天就来发挥django10成的功力

    6.三个框架

      Django:
        路由
        视图
        模板
        ORM框架(本质上在内部,类-表,对象-行,连接数据库还是用pymysql)

      Torando:
        路由
        视图
        模板
        pymysql,SQLAchemy(没有ORM框架可以随便用,就是有也可以随便用,但是既然有就用)
      flask:
        路由
        视图
        模版(第三方组件)
        pymysql,SQLAchemy(也没有ORM框架,瞎胡用)

    7.app01目录:

      migrations -数据库相关使用的,讲modal的时候会说
      admin -django在内部写的一个后台管理,用来配置后台管理进去之后能做什么操作,可以代替nevicate了
      apps -当前app01的相关的配置文件可以下在这里
      models -django的ORM类就写在这个文件里面,类->表
      test -快速的做一个单元测试

    8.路由系统

      url -> 函数
        a. /login/ -> def login
        b. /add-user/(d+) -> def login 在url上还可以写正则表达式
        c. get传值:权重低,搜索结果在后面,百度爬虫会认为?后面的东西会经常变
        d. .html伪静态,静态文件访问速度快,增加权重,哄用户,骗百度
        e. url(r'^edit$', views.edit) 推荐用这个
        f. 伪静态:
        类似静态网站,一访问就直接把模板返回,动态网站需要从数据库拿
        点东西然后进行模板渲染在返回给浏览器,后者比较慢
        例:url(r'^edit/(w+).html$',views.edit)
        g. 路由分发:
        宗旨:让每一个app里面都有一个自己的url路由系统 include
        引入include通过他把引路 url(r'^app01/',include('app01.urls'))
        h. 起别名: url(r'^index/(?P<a1>d+)/', views.index,name='n1')
        根据名字反推出url:
        1.在Python中先导入reverse
        2.反生成url

      url分为三种:
        1.一对一
        2.正则表达式类的url,加几节url就要在函数中对应有几个参数接收
        3.include -- url分发

    9.别名的运用:

      别名和ORM是Django框架特有的
      ***注意:
      如果是url一对一的话:在函数中也就是后台通过reverse反转的url,就是函数对应的url,这个没毛用
      url正则情况:在函数中通过reverse反转的url,开始断不变其他随意变的东东
      如果是前端替换的话:可以利用urls文件中写的任意别名

    --------------------------------------------------------------------- 
    数据库里面存放着每个用可以看到的url表,比如:
    方柯基:/index/a/b/c/d/e/
    /login/a/b/c/d/e/
    /duantui/a/b/c/d/e/
    当用户方柯基一登录的时候,我们就要从数据库拿到这些数据,再通过模板
    渲染后发送给服务器,在模板中我们要循环这些url插入到a标签中
    <ul>
    for url in url_list:
    <li><a href='{{url}}'>ff</a><li>
    </ul>
    但是这样的话url很长,而且一眼看不出干啥的,于是就有了别名
    我们在数据库就存这个
    方柯基:n1
    n2
    n3
    这样我们在数据库放的东西也少了,而且别名由我们自己取,我们
    可以自己起一个适合的名字。渲染的时候变一下就可以了
    <ul>
    for name in name_list:
    <li><a href='{% url name %}'>ff</a><li>
    </ul>
    ---------------------------------------------------------------------
    

    10.视图函数:

      CBV:围绕类来写,就是面向对象
      FBV:围绕函数来写,之前就是一直这么搞

    11.ORM操作

    在HTTP请求中:
    	url->视图(模板+数据)
    
    ORM功能:
    	1.操作表
    		创建表
    		修改表sqlAlchemy不能修改表
    		删除表
    	2.操作数据行
    		增删改查
    	ORM利用pymysql等第三方工具去连接数据库
    
    
    	默认:连接数据库用的是MySQLDB,需要修改为pymysql
    		  Django连数据库连得是SQLlite是文件型数据库
    	
    需要修改的地方:
    	1.将MySQLdb修改为pymysql
    	2.把SQLlite改为mysql
    
    步骤:
    	CMD:
    		django-admin startproject mysite6
    		cd mysite6
    		python manage.py startapp app01
    		python manage.py startapp app02
    		python manage.py startapp app03
    		一个project里面可以有多个app(一个app可以作为一个业务线)
    	1.创建数据库
    	2.DATABASES = {
    		'default': {
    		'ENGINE': 'django.db.backends.mysql',
    		'NAME':'db6',
    		'USER': 'root',
    		'PASSWORD': '',
    		'HOST': 'localhost',
    		'PORT': 3306,
    		}
    	  }
    	3.import pymysql
    	  pymysql.install_as_MySQLdb()
    	4.在models中创建:
    		class UserInfo(models.Model):
    		nid=models.BigAutoField(primary_key=True)
    		username=models.CharField(max_length=32)
    		password=models.CharField(max_length=64)
    	5.注册app01
    	  INSTALLED_APPS = [
    		'django.contrib.admin',
    		'django.contrib.auth',
    		'django.contrib.contenttypes',
    		'django.contrib.sessions',
    		'django.contrib.messages',
    		'django.contrib.staticfiles',
    		'app01'
    	  ]
    	6.创建数据表
    		Python manage.py makemigrations
    		python manage.py migrate
    
    	7.class UserGroup(models.Model):
    			'''
    			部门
    			'''
    			title=models.CharField(max_length=32)
    
    	  class UserInfo(models.Model):
    			'''
    			员工
    			'''
    			nid=models.BigAutoField(primary_key=True)   #AutoField 自动字段,这里是自增字段相当于自增int类型
    			user=models.CharField(max_length=32)
    			password=models.CharField(max_length=64)
    			# age=models.IntegerField(null=True)
    			age=models.IntegerField(default=1)
    			ug=models.ForeignKey("UserGroup",null=True)
    

      

  • 相关阅读:
    C/C++ _wcsupr_s 函数 – unicode 字符串小写转大写 C语言零基础入门教程
    C/C++ atof函数 C语言零基础入门教程
    C/C++ ultoa函数 C语言零基础入门教程
    C/C++ _strlwr_s 函数 – 字符串大写转小写 C语言零基础入门教程
    C/C++ ceil 函数 C语言零基础入门教程
    C/C++ atol函数 C语言零基础入门教程
    idea在商店无法搜索到插件
    Go 关于 protoc 工具的小疑惑
    Golang 关于 proto 文件的一点小思考
    Go 如何编写 ProtoBuf 插件(二)?
  • 原文地址:https://www.cnblogs.com/wuyongqiang/p/7082864.html
Copyright © 2011-2022 走看看