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 %}

posted @ 2018-06-12 19:55  yangli0504  阅读(125)  评论(0编辑  收藏  举报