Django项目002
【摘要】 项目练习登录笔记
一、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文件
- 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',
],
},
},
]
- 静态文件(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")
]
- 注释掉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',
]
四、登录的完整示例
- 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>
- GET请求和POST请求
GET请求:
- 浏览器请求一个页面
- 搜索引擎检索关键字的时候
POST请求
- 浏览器向服务器提交数据,比如登录/注册等
- Django中的APP:
什么是APP?以及为什么要用APP?
- Project —>项目 (广西大学)
- APP ---->应用 (计算机学院/土木工程学院/机电工程学院/外国语学院)
- 方便我们在一个大的Django项目中,管理实现不同的业务功能。
- 创建APP的命令
A. 命令行,在Django项目的根目录输入:
python3 manage.py startapp app01
- ORM
>>> import pymysql
>>> pymysql.connect(
...
...
...
)
- 不同的程序员写的SQL水平参差不齐
- 执行效率也参差不齐
python语法 --自动翻译—> SQL语句
iQuery <----> DOM
$("#d1") ---->自动翻译----> document.getElementById(“d1”)
- ORM:
优点:
A). 简单,不用自己写SQL语句
B). 开发效率高
缺点:
A). 记忆你这个特殊的语法
B). 相对于大神写的SQL语句,肯定执行效率有差距
- ORM的对应关系:
类 —> 数据表
对象 —> 数据行
属性 —> 字段
- ORM能做的事:
A). 操作数据表 —> 创建表/删除表/修改表
操作models.py里面的类
B). 操作数据行 —> 数据的增删改查
不能创建数据库,只能自己手动创建数据库
- 使用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
- 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)