django项目的简单实现分析

配置静态文件

简介

什么是静态文件?

  django项目中引入的第三方的包,js,css,自己写的js,css,保存的图片等相关数据

为什么要配置静态文件?

  浏览器通过html页面拿到我们导入的第三方库的路径,发起请求,django是只针对打开接口的资源(url控制的),能被请求,我们的静态文件默认没有被打开请求,配置静态文件就是给外部打开能访问内部资源的文件夹,让外部直接访问。

配置

  1 默认所有的静态文件放在static文件夹下

    把所有的上述文件放在这个文件夹

  2 要在setting中配置

STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'), # 里边可以放多个文件夹
]

注意:

"""
1 static文件夹是大家统一默认的放静态文件的文件夹名字,在setting中配置后里边所有的资源对外部开放,能被直接请求
2 setting中的 STATIC_URL = '/static/' 设置,设置的是html文件中设置的外部请求第三方包的路径前缀,与1的文件夹名字无关
3 setting中的STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'],"static"表示的你静态文件的文件夹
4 STATICFILES_DIRS中可以放多个静态文件夹

"""

 路由控制  

在django的urls.py文件中

from django.contrib import admin
from django.conf.urls import url
from app01.views import * # 导入应用中的视图函数

urlpatterns = [
    url('admin/', admin.site.urls), # django后台管理自带的
    url('test/', get_test), # 自己去写的
]

注意:

  1 urlpatterns是一个列表可以放多个值

  2 url是一个函数,第一个参数是正则表达式,第二个参数是views.py里映射的视图函数

  3 浏览器求情url路径最后没加"/"时,会重定向到"/"的url再次发请求,所以请求时可以不加"/"


视图函数

写在应用的views.py文件中

三板斧:render,HttpResponse,redirect

from django.shortcuts import render, HttpResponse, redirect


def get_test(requests):
if requests.method == "GET":
print(requests.GET)
name = requests.GET.get("name")
name1 = requests.GET.getlist("name")
print(name, name1)
return HttpResponse("GET")
elif requests.method == "POST":
name2 = requests.GET.get("name")
name3 = requests.GET.getlist("name")
print(name2, name3)
return HttpResponse("POST")
return HttpResponse("错误请求")
"""
1 requests.method # 获得前端请求的请求方法,GET或POST
2 requests.GET可以获取前端get请求的数据<QueryDict: {'name': ['lynn', 'egon']}>
3 可以通过字典取值方法,获取requests.GET中的数据,默认的是value列表的最后一个值
4 如果想获取所有的value列表,用requests.GEt.getlist("name")方法,会得到一个列表
5 POST请求和get一样
"""

 注意:

post提交数据时,浏览器会抛异常:

 
先注释掉setting中的:

数据库

 基于pymysql

views.py

 
 
from django.shortcuts import render, HttpResponse, redirect
import pymysql


def get_user_info(requests):
if requests.method == "GET":
return render(requests, "login.html")
elif requests.method == "POST":
conn = pymysql.connect(
host="132.232.98.201",
port=3306,
database="django_table",
user="root",
password="boonray",
charset="utf8",
autocommit=True
)# 连接数据库
name = requests.POST.get("name")
password = requests.POST.get("password")
cursor = conn.cursor(pymysql.cursors.DictCursor)
cursor.execute("select * from django_user where name=%s and password=%s", (name, password)) # 执行sql语句
user_info = cursor.fetchall() # 得到执行结果
if user_info: # 验证数据是否存在
return HttpResponse("登录成功")
return HttpResponse("错误请求")

基于orm

django连接数据库

setting中配置

DATABASES = {
    # 'default': {
# 'ENGINE': 'django.db.backends.sqlite3', # 默认的是一个小的数据库sqlite3
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
"default": {
'ENGINE': 'django.db.backends.mysql',
'NAME': "django_table",
"USER": 'root',
"PASSWORD": '123',
"HOST": "127.0.0.1",
"PORT": 3306,

}
}
# 注意: 字典的key全部是大写

在项目或者应用文件包下的__init__文件中配置

import pymysql
pymysql.install_as_MySQLdb() # 用pymysql代替mysql_db连接数据库

orm

对象关系映射,实现对数据表数据的简单的增删改查

  1 类映射数据库中的表

  2 属性映射到数据库中的字段

  3 对象映射到数据库中的一条数据

models.py文件

models.py文件

 from django.db import models


# Create your models here.
# 用户表
class DjangoUser(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=32)
password = models.CharField(max_length=32)

class Meta:
db_table = "django_user"
  def __str__(self): # 打印对象是,打印结果为name字段值
    return self.name

 views.py

from django.shortcuts import render, HttpResponse, redirect
from app01.models import *


def get_user_info(requests):
    if requests.method == "POST":
        name = requests.POST.get("name")
        password = requests.POST.get("name")
        user_obj = DjangoUser.objects.create(name=name, password=password) # 保存数据到数据库,会把新创建的数据对象返回
        # user = DjangoUser(name=name, password=password) # 第二种方式保存
        # user.save() # 调用save方法,保存到数据库,没有返回值
        if user_obj:
            return HttpResponse("注册成功")
        else:
            return HttpResponse("注册失败")
    return render(requests, "login.html")

views.py

def delete_user(requests):
delete_id = requests.GET.get("delete_id")
DjangoUser.objects.filter(id=delete_id).delete() # 固定用法,表.objects....filter()相当于sql的where,筛选
return HttpResponse("删除成功")

 查

 views.py

def get_user(requests):
# user_list = DjangoUser.objects.all() # 查询数据库表中所有的数据,返回的是QuerySet对象可以索引取值
# user_list = DjangoUser.objects.filter() # filter中加筛选条件,返回的是QuerySet对象
# print(user.query) # 对象可以执行query方法,结果是得到这个对象的sql语句
    user = DjangoUser.objects.filter().first() # 结果是数据对象
return render(requests, "login.html", locals()) # 第三个参数必须是字典,locals是当前所有能获取的变量生成一个字典

 views.py

def update_user(requests):
    update_id = requests.POST.get("update_id")
    name = requests.POST.get("name")
    password = requests.POST.get("password")
    user_id = DjangoUser.objects.filter(id=update_id).update(name=name, password=password)
    if user_id: # 返回结果是修改数据的id
        return HttpResponse("修改成功")

  


猜你喜欢

转载自www.cnblogs.com/tianzhh/p/11596198.html