• Django 0.2


    一. 登录功能的实现

        1. form表单提交数据的注意事项:

            1. 是form不是from,必须要有method和action

            2. 所有获取用户输入的表单标签要放在form表单里面,表单标签(input,select)必须要有name属性

            3. form表单必须要有submit按钮

     

        2. GET和POST

            用GET: 向服务端请求一个网页的时候;搜索引擎检索时

            用POST: 使用表单向服务器提交数据时

     

        3. request.method --> 获取的是你请求的方法(GET/POST...)

          # 返回的GET,POST都是大写的,所以在编写业务逻辑时,必须大写!!!

     

        4. request.POST   --> 获取POST提交过来的全部数据(字典)

           # ps request.POST的格式{'name':[], 'password': []}. 可以根据[key]的形式取value,但推荐用.get(),这样没有的话,返回None,不报错。

        5. redirect        --> 跳转到指定页面!!!

           # 当浏览器解析到3**时,直接向redirect的url发请求,不会继续解析。

     

    总结: 基础必会三件套

         from django.shortcuts import HttpResponse,render,redirect

            a. HttpResponse("OK")

            b. render(request, "login.html")

            c. redirect("URL")

     

        6. app: app之于project,相当于学院之于学校;一个学校可以有多个学院;当项目较大时,推荐将不同的文件放入不同的app中

     

            创建APP:

                a. 在pycharm中的terminal中

                   python3 manage.py startapp app01  

    # /usr/local/bin/python3.6 manage.py startapp app01

                b. 在项目创立初期,在application中填写app01

                c. Tools -> Run manage.pyTask -> startapp app01

     

            创建好APP,记得告诉Django, 我有这个app:

                在settings.py中,

                # 安装的app都有哪一些

                INSTALLED_APPS = [

                    'django.contrib.admin',

                   'django.contrib.auth',

                   'django.contrib.contenttypes',

                   'django.contrib.sessions',

                   'django.contrib.messages',

                   'django.contrib.staticfiles',

                    'app01',

                    # 'app01.apps.App01Config',  # 推荐这一种,不过目前两种方式都可以

                ]

     

             推荐将函数放到app01下的views.py中

     

         7. 如果出现forbidden,去settings.py中将46行附近的csrf相关行注释掉

                                       

    二. ORM(对象关系映射)

                1. 复习导入pymysql模块,操作数据库数据

                            import pymysql

                            conn = pymysql.connect(

                                        host="127.0.0.1",

                                        port=3306,

                                        user="root",

                                        password="123",

                                        database="day62",

                                        charset="utf8"

                            )

                            cursor = conn.cursor()

                            cursor.execute("select * from user;")

                            ret = cursor.fetchall()

     

                2. 用orm操作数据库(相当于导入jQuery,用jQuery语句($("#id"))替代原生sql语句(   document.getElementById(id)))

            数据表    --对应-->    类

            数据行    --对应-->    实例对象

            字段      --对应-->    属性

                

                3. 代码操作数据库的方式比较;

                            直接执行SQL

                                        优点:执行效率高

                                        缺点:开发效率低

                            按照特定的语法写,翻译成SQL语句再去执行

                                        优点:开发效率高

                                        缺点:执行效率低,你会忘记SQL语句

     

                            总结:ORM和原生的SQL语句,根据具体的应用场景自行取舍。

     

                4. 不同框架用不同的orm

                    e.g. sqlAlchemy  (Flask的orm)

                            

    三. Django里面的ORM的使用:

        1. 告诉Django连接那个数据库 (在settings.py的databases中配置mysql)

            DATABASES = {

                'default': {

                    'ENGINE': 'django.db.backends.mysql',

                    'NAME': 'db1',  # 哪个database

                    'HOST': '127.0.0.1',

                    'PORT': 3306,

                    'USER': 'root',

                    'PASSWORD': '123',

                }

            }

     

        2. 告诉Django怎么连接

            Django默认使用的是MySQLdb模块 连接数据库, 但MySQLdb不支持python3。所以,要告诉Django用pymysql这个模块去连接MySQL

            在settings.py同目录下的__init__.py文件中,指定使用pymysql模块代替MySQLdb

                import pymysql

                pymysql.install_as_MySQLdb()

     

        3. 在app/models.py文件中定义类

            一定要继承models.Model

        4. 执行创建表的操作(在pycharm的terminal中键入)

            1. python3 (/usr/local/bin/python3.6)manage.py makemigrations  --> 将models.py的修改登记到小本本上

            2. python3 (/usr/local/bin/python3.6)manage.py migrate         --> 将修改翻译成SQL语句,去数据库执行

            亦可: Tools -> Run manage.pyTask -> manage.py makemigrations;manage.py migrate

     

        5. 编辑表

           a. 在pycharm中的Database中(若没有,view-> tool buttons), + -> data source -> mysql -> download missing driver files -> test connection

              添加数据后,找绿色向上箭头保存

     

           b. navicate

     

           c. cmd中sql语句 

     

    四. 常规步骤

    1. 在models中建立一个类

     

    2. 在urls中加上对应关系

     

    3. 在views中添加该函数

     

    4. 在templates中创建该html文件

     

    五. 图书管理系统(项目)

                1. 表结构设计

                            1. 出版社

                            2. 书

                            3. 作者

     

                2. Django的模板语言

                {% for publisher in publisher_list %}  # 注意{%中间没有空格

        <tr>

            <td>{{ publisher.id }}</td>

            <td>{{ publisher.name }}</td>

        </tr>

        {% endfor %}

  • 相关阅读:
    安装的时候,突然安装程序关闭,的灵异问题。
    CSAPP阅读笔记(1)-序
    CSAPP阅读笔记(2)-虚存管理
    nafxcwd.lib(afxmem.obj) :error LNK2005:"void * __cdecl operator new(unsigned int)"
    Linux内核源代码情景分析读书笔记(5)-关于fork/clone/vfork
    [转]调试经验总结VC下的错误对话框
    IP数据包首部的校验和算法
    Matlab画图及生成exe文件
    VC++6.0中的new
    Linux内核模块编译、加载&卸载及查看运行结果
  • 原文地址:https://www.cnblogs.com/yangli0504/p/9174803.html
Copyright © 2020-2023  润新知