Django项目002

举报
Yuchuan 发表于 2021/03/04 20:22:26 2021/03/04
【摘要】 项目练习登录笔记

一、Django 安装:

pip3 install django==1.11.11
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ django==1.11.11

pycharm 安装的时候:
注意不要勾选那个选项


二、Django项目的启动:
1. 命令行启动
在项目的根目录下(也就是manage.py的那个目录),运行:
python3 manage.py runserver IP:端口 —>指定的IP和端口启动
python3 manage.py runserver 端口 —>在指定的端口启动
python3 manage.py runserver ---->默认在本机的8000端口启动
2. Pycharm 启动
点击绿色的小三角,直接可以启动Django项目(前提是小三角左边是你的项目名)


三、配置相关 项目名/settings.py文件

  1. templetes(存放HTML文件的配置) <— 告诉Django去哪找我的HTML文件
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
  1. 静态文件(css/js/图片)
    #静态文件保存目录的别名
    STATIC_URL = ‘/static/’
    #所有静态文件(css/js/图片)都放在下面我配置的文件夹中
    STATICFILES_DIRS = [
    os.path.join(BASE_DIR,“static”),
# 静态文件保存目录的别名
STATIC_URL = '/static/'

# 静态文件夹的位置
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static")
]
  1. 注释掉setting.py 中带有csrf 的那一行
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',
]

四、登录的完整示例

  1. form表单往后端提交数据需要注意哪三点:
    A. 所有获取用户输入的标签都应该放在form里面,并且必须要有name属性
    B. action属性控制往哪提交,method一般都设置成post
    C. 提交按钮必须是type=submit,不能是别的类型
<form class="form-horizontal" action="/login/" method="post">
                <div class="form-group">
                    <label for="inputEmail3" class="col-sm-2 control-label"></label>
                    <div class="input-group col-sm-8">
                         <span class="input-group-addon"><i class="fa fa-envelope-o fa-fw"></i></span>
                        <input type="email" name="email" class="form-control" id="inputEmail3" placeholder="Email">
                    </div>
                </div>
                <div class="form-group">
                    <label for="inputPassword3" class="col-sm-2 control-label"></label>
                    <div class="input-group col-sm-8">
                        <span class="input-group-addon"><i class="fa fa-key fa-fw"></i></span>
                        <input type="password" name="pwd" class="form-control" id="inputPassword3" placeholder="Password">
                    </div>
                </div>
                <div class="form-group">
                    <div class="input-group col-sm-offset-2 col-sm-8">
                        <div class="checkbox">
                            <label>
                                <input type="checkbox"> 记住我
                            </label>
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <div class="input-group col-sm-offset-2 col-sm-8">
                        <button type="submit" class="btn btn-primary btn-block">登录</button>
                    </div>
                </div>
                <p class="text-danger text-center">{{ error }}</p>
            </form>
  1. GET请求和POST请求

GET请求:

  1. 浏览器请求一个页面
  2. 搜索引擎检索关键字的时候

POST请求

  1. 浏览器向服务器提交数据,比如登录/注册等
  1. Django中的APP:

什么是APP?以及为什么要用APP?

  1. Project —>项目 (广西大学)
  2. APP ---->应用 (计算机学院/土木工程学院/机电工程学院/外国语学院)
  3. 方便我们在一个大的Django项目中,管理实现不同的业务功能。
  4. 创建APP的命令
    A. 命令行,在Django项目的根目录输入:
python3 manage.py startapp app01
  1. ORM
>>> import pymysql
>>> pymysql.connect(
...
...
...
)
  1. 不同的程序员写的SQL水平参差不齐
  2. 执行效率也参差不齐
    python语法 --自动翻译—> SQL语句
    iQuery <----> DOM
    $("#d1") ---->自动翻译----> document.getElementById(“d1”)
  1. ORM:
    优点:
    A). 简单,不用自己写SQL语句
    B). 开发效率高
    缺点:
    A). 记忆你这个特殊的语法
    B). 相对于大神写的SQL语句,肯定执行效率有差距
  1. ORM的对应关系:
    类 —> 数据表
    对象 —> 数据行
    属性 —> 字段
  1. ORM能做的事:
    A). 操作数据表 —> 创建表/删除表/修改表
    操作models.py里面的类
    B). 操作数据行 —> 数据的增删改查
    不能创建数据库,只能自己手动创建数据库
  1. 使用Django的ORM详细步骤:
    A). 自己动手创建数据库
    create database 数据库名;
    B). 在Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库)
# 数据库相关的配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': 'cdb-216n5pvsssd4532zz.gz.tencentcdb.com',
        'USER': 'root',
        'PASSWORD': 'a123456',
        'PORT': '3349',
        'NAME': 'HuayingYuchuanProDB',
    }
}

C). 告诉Django用pymysql代替默认的MySQLDB 连接MySQL数据库
在项目/init.py文件中,写下面代码:

import pymysql

# 告诉django用pymysql来代替默认的mysqldb
pymysql.install_as_MySQLdb()

D). 在app下面的models.py文件中定义一个类,这个类必须继承models.Model
class 类名(models.Model):
E). 执行两个命令:

python3 manage.py makemigrations
python3 manage.py migrate
  1. ORM表单的增加和查询:
    A).创建数据库表
from django.db import models

# Create your models here.
# ORM相关的类只能写在这个文件中,写到别的文件里Django找不到.

class UserInfo(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(null=False, max_length=16)

B). 查询:

models.UserInfo.objects.all()

B). 增加:

models.UserInfo.objects.create(name="张三")
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。