温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

二、1:静态文件配置,并配置简易版登录功能。

发布时间:2020-06-18 01:22:44 来源:网络 阅读:352 作者:a120518129 栏目:编程语言

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标签里面

注意:<input type="submit" value="提交">或<button></button> type不可以是button

<form action="http://127.0.0.1:8000/login" method="post">
<p>用户名:<input type="text" name="name" class="form-control"></p>
<p >密码:<input type="password" name="pwd" class="form-control"></p>
<input type="submit" value="提交">
</form>

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          ----将变化同步到数据库中





向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI