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

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'),
    # 创建的文件夹路径(可以写多个)
]

   2 数据库配置:

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

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

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

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

4 完整版登录功能

小知识

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

1 login.html  

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


1 http://127.0.0.1:8000/login-

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

3 空

2 method  post方式

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

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 链接数据库(防止注入,推荐以下写法)

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的

5  ORM介绍

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',

}

在app下的__init__.py里写:

import pymysql

pymysql.install_as_MySQLdb()




猜你喜欢

转载自blog.51cto.com/silencezone/2325469
今日推荐