• Django基础


    Django基础练习

    知识了解

    用户能够访问的所有的资源,都是程序员提前暴露好的,如果你没有暴露用户是永远访问不到的

    django是可以自动重启的,但是有时候反应速度会比较慢,也有可能在你的代码没有写完的时候重启了,这里如果报错的话,不用去管他.

    必会三板斧

    首先在views.py视图界面下导入:
    from django.shortcuts import render, HttpResponse, redirect
    
    render  #可以返回html页面
    eg:
      def login(request):
          return rnder(request, 'login.html') #返回你指定的html页面
    
    HttpResponse  #返回字符串
    eg:
      def index(request):
          return HttpRespinse('index') #返回你指定的字符串
    
    redirect  # 重定向
    eg:
       def home(request):
           return redirect('http://www.baidu.com') #返回一个你指定的网站
    

    静态文件配置

    静态文件,就是你网站所用到的, 如:自己写好的JS,自己写好的CSS, 第三方的框架 (bootstrap, fontwesome, sweetalert)

    在通常情况下,网站所用到的静态文件资源,统一都放在static文件夹的下
    
    接着你需要在setting里写配置找到
    STATIC_URL = '/static/'  #这是访问静态资源的接口前缀,他表示的是如果你想访问静态的资源,就必须以static开头.
    
    手动来配置静态文件的资源
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static') #把你自己创建的static文件夹放进去.
    ]
    
    最后我们在实现一个动态的解析(为了防止老板闲着没有事)
    {% load static %}
    <link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
    <script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script>
    
    

    form表单提交数据

    form表单 action参数可以写的形式
       1.不写 默认向当前地址提交
       2.只写后缀如/index/
       3.写全路径
       
    form表单默认朝后端提交数据的方式是get请求.
       get请求会直接把你输入的值给显示在url的后面.
       缺点:
           1.不安全
           2.get请求携带的参数大小有限制(最大不能超过4kb左右)
    前期如果你想提交post数据的话, 你要先去settings.py文件中去注释掉一个中间件.然后把form里的method='post'这样就能提交post数据了
    MIDDLEWARE = [
          # 'django.middleware.csrf.CsrfViewMiddleware',
    ]
    

    request对象及方法

    前后端数据的交互
    如何去获取请求方式
    
    获取post请求携带的数据
    request.POST
    
    获取get请求携带的数据
    request.GET
    要知道get和post在后端获取用户数据的时候,规律都是一样的
    
    针对不同的的数据请求我们要有不同的处理方式,一般这样来写:
    if request.method == 'POST':
       # 比如你的登录的话就是在post请求,可以在里面做一些逻辑处理
       先拿到到客户端提交上来的数据:
       username = requesr.POST.get("username")
       res = models.Userinfo.objects.filter(user=username)
       #相当与sql语句:select * from userinfo where username='kang';
       print(res)# 这里查出的是列表类型的数据
       user_obj = res.first() #这里我们是拿到第一条数据的一个对象,使用.属性的方法.可以去取我们想要的值.
       if username == user_obj.username:
           print('登录成功')
           
     如果你是注册的话,上面的if语句如果不存在,可以直接执行下面的语句
     user_obj = models.Userinfo.objects.create(username=username, password=password)
     相当于sql语句:
     insert into userinfo(username, password) values('kang', '123');
     create方法会有一个反回值, 反回值就是当前被创建的数据对象
     
     最后如果不是post请求的话,你可以直接进行反回数据
     return render(request, 'login.html'), 如果你想拿出get请求的数据的话,和port用法一样.
       
    

    4.数据库的连接

    使用django连接数据库mysql
    第一步:在配置文件当中配置
     DATABASE = {
         'default' :{
             'ENGINE': 'django.db.backends.mysql',  #指定连接mysql
             'NAME': 'db1', #使用哪个数据库
             'USER': 'root',
             'PASSWORD': 'root',
             'HOST':'127.0.0.1',
             'PORT': 3306,
             'CHARSET': 'utf8',
             
         }
     }
    
    最后你要告诉一下django不要用mysqldb该用pymysql连接.
    你可以在项目名下的__init__.py里,也可以在应用名下面的__init__.py文件里指定
    
    import pymysql
    pymysql.install_as_MySQLdb()
    

    Django orm简介

    orm对象关系映射
    类  --->  数据库的表
    对象---->  表的记录
    对象获取属性---> 记录某个字段对应的值
    
    优点是:能够让一个不会数据库操作的人, 也能够简单快捷的去使用数据库
    
    缺点: 由于封装的程度太高, 可能会导致程序的执行效率偏低,有时候结合项目可能需要你手写sql语句
    
    
    注意事项:
        1.django的orm不会自定帮你创建库的,这需要你自己去创建
        表得话它会帮你创建, 你只需要书写符合django orm的语法的代码即可
    
    需要去models.py中去书写类,
    
    from django.db import models 
    
    class Userinfo(models.Model):
           id = models.AutoField(primary_kry=Ture)  #在django中,你可以不指定主键字段,它会自动的帮你创建
           username = models.CharFiled(max_length=64) #这里表示 username varchar(64), CharField必须要指定max_length字段.
           password = models.IntegerField()
           
    重点掌握:
    数据库迁移(同步)命令:
    python manage.py makemigrations #这里不会创建表, 会将你当前的操作记录一下.(migrations)
    
    python manage.py migrate # 将你的orm语句真正的迁移(同步)到数据库当中
    
           
    

    只要你对models.py中修改了与数据库相关的代码, 你就必须重新开始执行上面的两条命令

  • 相关阅读:
    内聚和耦合的举例
    OneZero第四周第五次站立会议(2016.4.15)
    OneZero第四周第四次站立会议(2016.4.14)
    OneZero团队Beta发布剧透
    PSP(4.6——4.12)以及周记录
    关于“内聚和耦合”
    CSV 注入实战
    BurpSuite 一些小技巧
    博客园URL跳转钓鱼
    【Demo 0005】Android 资源
  • 原文地址:https://www.cnblogs.com/kangwy/p/11718015.html
Copyright © 2020-2023  润新知