二、1:静态文件配置,并配置简易版登录功能。
admin
2023-07-15 14:21:56
0

1 django中app的概念:

大学:----------------- 项目

信息学院 ----------app01

物理学院-----------app02

****强调***:创建了app,要在配置文件中注册

...

2 模板路径配置:

1 templates文件夹 (这里面放自已写的静态文件代码)

2 settings里注册一下

3 静态文件配置:

   1 静态文件配置:

settings.py

# 'django.middleware.csrf.CsrfViewMiddleware',     # 大约在47行注释掉
STATIC_URL = '/static/'  # 默认已有的
# 创建一个static文件夹
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
    # 创建的文件夹路径(可以写多个)
]

  

4 完整版登录功能

小知识

get:获取数据,页面,携带数据是不重要的数据(数据量有大小限制)
post:往后台提交数据	

1 login.html  

***重点***1 action:提交到后台的地址三种写法:


1 http://127.0.0.1:8000/login-

2 /login/   推荐用!!!!!!!!

3 空

 method  post方式 (templates目录下静态代码文件名:login.html,写在body标签里面

注意: type不可以是button


用户名:

密码:

2 建立与配置数据库

提前建立一个名为db1的数据库

在应用名目录下的models.py文件中:


models.py

class User(models.Model):
    id=models.AutoField(primary_key=True)   #  primary_key=True 是为主键,AutoField:自增
    name=models.CharField(max_length=32)    #  CharField:字符串类型,max_length=32 字符串最大长度为32
    pwd=models.CharField(max_length=32)


数据库迁移

1 python3 manage.py makemigrations   ----记录一下数据库的变化

2 python3 manage.py migrate          ----将变化同步到数据库中

字段中写入数据,将来测试。


3 视图层:(views.py 如果在视图层已配置了连接数据库后,就不要在settings.py中设置的数据库了。)

1 request.method  ----前台提交过来请求的方式

2 request.POST(相当于字典)----post形式提交过来的数据,(http请求报文的请求体重)

3 request.POST.get('name') ----推荐用get取值(取出列表最后一个值)

4 request.POST.getlist('name')-----取出列表所有的值_

5 前台get方式提交的数据,从request.GET字典里取

2 链接数据库(防止注入,推荐以下写法)

 1:先在urls.py(总路由,请求地址跟视图函数的映射关系)里面增加一条路由

 url(r'^login/', views.login),

  2:在视图函数中写入

cur.execute('select * from user where name=%s and password=%s ',[name,pwd])

from django.shortcuts import render,HttpResponse
import pymysql
def login(request):
    if request.method=='GET':
        return render(request,'login.html')
    elif request.method=='POST':
        name=request.POST.get('name')
        pwd=request.POST.get('pwd')
        # 使用mysql 连接 <
        conn=pymysql.connect(host='127.0.0.1',port=3306,db='db1',user='root',password='mariadb.123')
        cur=conn.cursor()
        # sql防注入
        cur.execute('select * from user where name=%s and password=%s ',[name,pwd])
        user=cur.fetchone()  # 从数据库中的user 表里,只取一条数据,返回元祖类型
        if user:
            return HttpResponse('successful')
        else:
            return HttpResponse('fail')

3、render、redirect、HttpResponse作用

1 render--返回页面,默认会去templates里找,注意路径

2 redirect--重定向

3 HttpResponse -- 本质:都是返回HttpResponse的


最后访问:http://127.0.0.1:8000/login/ 测试。


5  ORM介绍与数据库配置(与上面views.py文件中的连接数据库不可重复配置,以后我们都会这种方式去学习,写在views.py链接数据库中的方式仅作了解)

1 ORM即Object Relational Mapping,全称对象关系映射。

优点: 

1 不用写sql,不会sql的人也可以写程序

2 开发效率高

2 缺点:

1 可能sql的效率低

3 如何使用:

如果连接mysql:在setting.py里配置:(记得提前建立数据库)

'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': 'password',
'NAME': 'dbname',
			}

 2 数据库配置:

在app下的__init__.py里写:
import pymysql
pymysql.install_as_MySQLdb()

 3 orm创建表 (会创建app01_user的表中,字段为:id,name,pwd)

django-orm:

1 不能创建数据库(需要手动创建数据库)

2 可以创建数据表

3 可以创建字段

models.py

class User(models.Model):
    id=models.AutoField(primary_key=True)   #  primary_key=True 是为主键,AutoField:自增
    name=models.CharField(max_length=32)    #  CharField:字符串类型,max_length=32 字符串最大长度为32
    pwd=models.CharField(max_length=32)

   5  数据库迁移

1 python3 manage.py makemigrations   ----记录一下数据库的变化

2 python3 manage.py migrate          ----将变化同步到数据库中





相关内容

热门资讯

特朗普:正致力于与伊朗达成协议... 特朗普在《纽约邮报》一档播客访谈节目中称,他正与伊朗磋商一项协议,伊朗已同意不再谋求拥有核武器。他表...
不接壤的日菲为何偷划海界? 日菲近日发表联合声明,宣称就“划定两国专属经济区和大陆架的海洋边界”启动正式谈判。两个隔海相望的国家...
凤凰晚报丨从钳工到老戏骨,魏宗... 今日人物【从钳工到老戏骨,魏宗万用一生诠释“戏比天大”】6月1日,表演艺术家魏宗万在上海逝世,享年8...
科威特称伊朗袭击致63人受伤 科威特卫生部门3日称,伊朗当天对科威特的袭击已造成63人受伤,相关部门已启动紧急应对预案,并在全国范...
日本标榜“和平国家”却行扩军备... 今年是东京审判开庭80周年,世界正回望历史、反思战争罪责、捍卫二战后来之不易的国际秩序之际,日本却迈...
浙江杨梅即将大规模上市,如何破... “我们现在的压力很大。”5月底,浙江余姚杨梅产区丈亭镇副镇长林宇站在一片杨梅林前对第一财经表示,当地...
致5死2伤!韩国就韩华航空航天... 【环球网报道 记者 姜蔼玲】据韩联社6月1日报道,针对位于韩国大田的韩华航空航天公司发生爆炸致7人伤...
黄河科技学院2026年招生简章 长按图片识别二维码或点击 “阅读原文” 查看电子招生简章。
医路起航,从“心” 开始!黄河... 6月1日上午,黄河科技学院附属医院2022级临床医学本科实习生入院岗前培训在大医讲堂顺利举办。院领导...
问题居然在实体卡槽上!美版iP... 6月2日消息,日前,又有博主提前把还没发布的iPhone 18 Pro电池参数给曝光了出来,根据爆料...