• django


    Django

    一、django

    ​ Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。

    二、启动Django

    ​ 1. jiango-admin startproject 项目名

    1. python manage.py runserver
      3. python manage.py startapp 应用名

    ​ 注意:

    ​ 创建的应用一定要去settings.py文件中进行注册;

    ​ 命令行式创建项目没有tempolates,而且settings.py文件中也没有路径配置;

    ​ 使用pycharm创建可以自动创建tempolate文件夹和路径,也可以支持创建一个应用并注册。要增加应用必须手动添加并注册。

    三、创建Django项目

    3.1 文件

    3.1.1 url.py:

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^login/', views.login),
        url(r'^reg/', views.reg)
    ]
    

    3.1.2 视图文件:

    # Create your views here.
    
    def login(request):
        pass
    
    def reg(request):
        pass
    

    3.2 reder,HttpResponse,redirect的使用

    ​ reder直接返回html页面:

    def reg(request):
        user_dic = {'name': 'ceng', 'pwd': 123}
        return render(request, 'reg.html')
    # 第一种给模板传值的方式
        return render(request, 'reg.html', {'xxx': user_dic})
    # 第二种给模板传值的方式,但是会出现效率问题
        return render(request, 'reg.html', locals())
    

    ​ HttpResponse返回字符串:

    def login(request):
        return HttpResponse('你好')
    

    ​ redirect为重定向:

    def home(request):
        return redirect('http://www.badu.com')
    

    3.3 静态文件配置

    ​ 一般情况下静态文件资源都统一放在stasic文件夹下,配置位置在settings,STATIC_URL = '/static/'是访问静态资源的接口前缀,只要访问静态资源,就必须以stasic开头。

    ​ 手动配置静态文件访问资源:

    STATIC_URL = '/static/'
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static'),
        os.path.join(BASE_DIR, 'static1'),
        os.path.join(BASE_DIR, 'static2')
    ]
    

    ​ 注:文件查找顺序会按照static,static1,static2的顺序,最后也没有找到才会报错。

    3.4 动态配置

    ​ 静态会将访问的字符写死,而动态可以解决这个问题,在HTML文件加上一段模板语法:

    {% load static %}
        <link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
        <script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script>
    

    3.5 form表单交互

    ​ form表单默认的提交方式是get请求,get请求会携带参数,加载url?后面。

    ​ get请求缺点是不安全;携带的参数大小有限。

    ​ 如果要提交post请求,可以在settings.py文件中注释掉一句话

    MIDDLEWARE = [
      'django.middleware.security.SecurityMiddleware',
      'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        # 'django.middleware.csrf.CsrfViewMiddleware',
      'django.contrib.auth.middleware.AuthenticationMiddleware',
      'django.contrib.messages.middleware.MessageMiddleware',
      'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    

    3.6 request请求

    ​ 发送请求会返回get或者是post,因此需要对不同的请求方式,进行不同的逻辑运算。获取请求方式会返回大写字符串,默认请求为get,因此对请求区分处理:

    if request.method == 'POST':
        print('这是post请求')
    print ('这是get请求')
    

    ​ 获取请求的方法:

    request.POST
    # 默认获取最后一个元素
    username = request.POST.get('username') 
    # 取出完整列表
    hobby = requset.POST.getlist('hobby')
    # get和post在后端获取用户数据的时候 规律是一样的
    request.GET
    

    3.7 连接mysql

    ​ django连接mysql:

    ​ 第一步:在配置文件中配置属性:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',  # 指定数据库 
            'NAME': 'day57',  # 到底使用哪个库
            'USER':'root',
            'PASSWORD':'',
            'HOST':'127.0.0.1',
            'PORT':3306,
            'CHARSET':'utf8'
        }
    }
    

    ​ 第二步:在项目名下的--init--.py 也可以在应用名下面的--init--.py文件中指定:

    import pymysql
    pymysql.install_as_MySQLdb()
    

    3.8 django中的orm

    ​ 对象关系映射(Object Relational Mapping,简称ORM).

    ​ 类-->数据库的表;对象-->表的记录;对象获取属性-->记录的某个字段对应的值。

    ​ 优点:能够让一个不会数据库操作的人 也能够简单快捷去使用数据库。

    ​ 缺点:由于封装程度太高 可能会导致程序的执行效率偏低。

    ​ 注意:orm不能建立库,需要自行创建;要在models.py中创建类。

    from django.db import models
    
    # Create your models here.
    class Userinfo(models.Model):
        # 设置id字段为userinfo表的主键  id int primary key auto_increment
        # 在django中 你可以不指定主键字段 django orm会自动给你当前表新建一个名为id的主键字段
        id = models.AutoField(primary_key=True)  
        # 设置username字段  username varchar(64)  CharField必须要指i定max_length参数
        # 在django orm中 没有char字段  但是django 暴露给用户 可以自定义char字段
        username = models.CharField(max_length=32)  
        # 设置password字段  password int
        password = models.IntegerField()
        # 新增的字段 可以提前设置默认值
        phone = models.BigIntegerField(default=110)
        # 新增的字段 可以设置为空
        addr = models.CharField(max_length=64,null=True) 
    

    ​ 注意!!!!!!

    ​ 每次修改了models.py中与数据库相关的代码,必须在terminal中输入以下两条命令:

    # 将操作生成记录,并没有生成表
    python manage.py makemigrations
    
    # 及记录迁移到数据库
    python manage.py migrate
    

    3.9 字段的操作

    ​ 字段的增删改查可以直接在models.py中编辑即可,注意主键默认值等属性,每次修改完都要进行数据迁移。

  • 相关阅读:
    书本第十三章课后习题4、5、6
    软件工程一班第五小组知识树系统-软件测试计划
    第八周作业
    第七周作业——用面向对象方法分析研究书中习题2第3题中描述的机票预订系统,试建立它的对象模型、动态模型和功能模型。
    第六周作业——建立订货系统的用例模型
    第五周作业——用状态转换图描绘复印机的行为
    第四周作业——在你的实际项目旅游网站中,网页主页面主要有哪些模块?
    第三周作业—— 在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?
    第二周作业——面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?请根据自己的理解简明扼要的回答。
    有学生提到,在大学选课的时候,可以写一个“刷课机”的程序,利用学校选课系统的弱点或漏洞,帮助某些人选到某些课程。或者帮助用户刷购票网站,先买到火车票。这些软件合法么?符合道德规范么?是在“软件工程”的研究范围么? 请大家讨论。
  • 原文地址:https://www.cnblogs.com/tangceng/p/11716982.html
Copyright © 2020-2023  润新知