Django基础

Django基础练习

知识了解

用户能够访问的所有的资源,都是程序员提前暴露好的,如果你没有暴露用户是永远访问不到的

django是可以自动重启的,但是有时候反应速度会比较慢,也有可能在你的代码没有写完的时候重启了,这里如果报错的话,不用去管他.

必会三板斧

首先在views.py视图界面下导入:
from django.shortcuts import render, HttpResponse, redirect
render  #可以返回html页面
eg:
  def login(request):
      return rnder(request, 'login.html') #返回你指定的html页面
HttpResponse  #返回字符串
eg:
  def index(request):
      return HttpRespinse('index') #返回你指定的字符串
redirect  # 重定向
eg:
   def home(request):
       return redirect('http://www.baidu.com') #返回一个你指定的网站

静态文件配置

静态文件,就是你网站所用到的, 如:自己写好的JS,自己写好的CSS, 第三方的框架 (bootstrap, fontwesome, sweetalert)

在通常情况下,网站所用到的静态文件资源,统一都放在static文件夹的下

接着你需要在setting里写配置找到
STATIC_URL = '/static/'  #这是访问静态资源的接口前缀,他表示的是如果你想访问静态的资源,就必须以static开头.

手动来配置静态文件的资源
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static') #把你自己创建的static文件夹放进去.
]

最后我们在实现一个动态的解析(为了防止老板闲着没有事)
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script>

form表单提交数据

form表单 action参数可以写的形式
   1.不写 默认向当前地址提交
   2.只写后缀如/index/
   3.写全路径
   
form表单默认朝后端提交数据的方式是get请求.
   get请求会直接把你输入的值给显示在url的后面.
   缺点:
       1.不安全
       2.get请求携带的参数大小有限制(最大不能超过4kb左右)
前期如果你想提交post数据的话, 你要先去settings.py文件中去注释掉一个中间件.然后把form里的method='post'这样就能提交post数据了
MIDDLEWARE = [
      # 'django.middleware.csrf.CsrfViewMiddleware',
]

request对象及方法

前后端数据的交互
如何去获取请求方式

获取post请求携带的数据
request.POST

获取get请求携带的数据
request.GET
要知道get和post在后端获取用户数据的时候,规律都是一样的

针对不同的的数据请求我们要有不同的处理方式,一般这样来写:
if request.method == 'POST':
   # 比如你的登录的话就是在post请求,可以在里面做一些逻辑处理
   先拿到到客户端提交上来的数据:
   username = requesr.POST.get("username")
   res = models.Userinfo.objects.filter(user=username)
   #相当与sql语句:select * from userinfo where username='kang';
   print(res)# 这里查出的是列表类型的数据
   user_obj = res.first() #这里我们是拿到第一条数据的一个对象,使用.属性的方法.可以去取我们想要的值.
   if username == user_obj.username:
       print('登录成功')
       
 如果你是注册的话,上面的if语句如果不存在,可以直接执行下面的语句
 user_obj = models.Userinfo.objects.create(username=username, password=password)
 相当于sql语句:
 insert into userinfo(username, password) values('kang', '123');
 create方法会有一个反回值, 反回值就是当前被创建的数据对象
 
 最后如果不是post请求的话,你可以直接进行反回数据
 return render(request, 'login.html'), 如果你想拿出get请求的数据的话,和port用法一样.
   

4.数据库的连接

使用django连接数据库mysql
第一步:在配置文件当中配置
 DATABASE = {
     'default' :{
         'ENGINE': 'django.db.backends.mysql',  #指定连接mysql
         'NAME': 'db1', #使用哪个数据库
         'USER': 'root',
         'PASSWORD': 'root',
         'HOST':'127.0.0.1',
         'PORT': 3306,
         'CHARSET': 'utf8',
         
     }
 }

最后你要告诉一下django不要用mysqldb该用pymysql连接.
你可以在项目名下的__init__.py里,也可以在应用名下面的__init__.py文件里指定

import pymysql
pymysql.install_as_MySQLdb()

Django orm简介

orm对象关系映射
类  --->  数据库的表
对象---->  表的记录
对象获取属性---> 记录某个字段对应的值

优点是:能够让一个不会数据库操作的人, 也能够简单快捷的去使用数据库

缺点: 由于封装的程度太高, 可能会导致程序的执行效率偏低,有时候结合项目可能需要你手写sql语句

注意事项:
    1.django的orm不会自定帮你创建库的,这需要你自己去创建
    表得话它会帮你创建, 你只需要书写符合django orm的语法的代码即可

需要去models.py中去书写类,

from django.db import models 

class Userinfo(models.Model):
       id = models.AutoField(primary_kry=Ture)  #在django中,你可以不指定主键字段,它会自动的帮你创建
       username = models.CharFiled(max_length=64) #这里表示 username varchar(64), CharField必须要指定max_length字段.
       password = models.IntegerField()
       
重点掌握:
数据库迁移(同步)命令:
python manage.py makemigrations #这里不会创建表, 会将你当前的操作记录一下.(migrations)

python manage.py migrate # 将你的orm语句真正的迁移(同步)到数据库当中

       

只要你对models.py中修改了与数据库相关的代码, 你就必须重新开始执行上面的两条命令

原文地址:https://www.cnblogs.com/kangwy/p/11718015.html