Django基础

三板斧的使用

三个方法

HttpResponse

render

redirect

frpm django.shortcuts import render,HttpResponse,redirect

HttpResponse       返回字符串类型的数据
render             返回HTML页面并且支持传值
redirect           重定向

全局配置文件
SECRET_KEY = 'w1iqa7+d17hb5=t8p640lxp8%nl3)t4fcmjk+@og8(4n*&-xmr'
# 加密的数据,盐


DEBUG = True #调试模式,改为False,页面不会报错
ALLOWED_HOSTS = [‘*’]

INSTALLED_APPS:"""注册应用"""


ROOT_URLCONF:路径,写的路由就去这个路径去寻找


TEMPLATES: 模版
WSGI_APPLICATION:wsigref----上线之后uwigaref


DATABASES:关于mysql数据库


AUTH_PASSWORD_VALIDATORS:密码的认校验


LANGUAGE_CODE:语言---修改中文zh-hanzi


TIME_ZONE = 'Asia/Shanghai'市区

静态文件的配置

静态文件:
类似于HTML文件。css文件,js、文件,图片或第三方框架

总的来说就是可以直接拿来用的都是静态文件

静态文件存在Django框架中的static文件夹中,但是默认情况下是没有这个文件夹的,需要我们手动去创建该文件夹static

静态的HTML一般放在templaes下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet">
    <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.js"></script>
</head>
<body>
<div class="container">
    <div class="row">
        <h1 class="text-center">登录页面</h1>
        <form action="">
            <div class="form-group">
                用户名<input type="text" class="form-control">
            </div>
            <div class="form-group">
                密码<input type="password" class="form-control">
            </div>
            <div class="form-group">
                <input type="submit" class="btn-success btn-block" value="登录">
            </div>
        </form>
    </div>
</div>
</body>
</html>
动态解析

使用本地配置文件

"""这个配置是访问静态文件的令牌"""
STATIC_URL = '/dasdasdasdas/'

"""其实就是static文件夹的路径"""
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),

动态解析:{%  load static  %}
         {{    }}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    {% load static %}
    <script src="{% static 'bootstrap-5.3.0-alpha1/js/jquery.js' %}"></script>
    <link rel="stylesheet" href="{% static 'bootstrap-5.3.0-alpha1/css/my_css.css' %}">
    <script src="{% static 'bootstrap-5.3.0-alpha1/js/bootstrap.min.js' %}"></script>
</head>
<body>
<div class="container">
    <div class="row">
        <h1 class="text-center">注册页面</h1>
        <form action="">
            <div class="form-group">
                用户名<input type="text" class="form-control">
            </div>
            <div class="form-group">
                密码<input type="password" class="form-control">
            </div>
            <div class="form-group">
                <input type="submit" class="btn-success btn-block" value="注册">
            </div>
        </form>
    </div>
</div>
</body>
</html>
request对象的方法
<form action="" method="post">
action:
	1. 不写,朝当前地址提交
    2. 全写
    3. 只写后缀
post提交表单,前期先把下面的代码注释掉
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',

取出POST请求的数据里的值

可以直接使用字典get取值


def login(request):
    print(request.method, type(request.method))
    if request.method == "POST":
        print(request.POST.get('usernmae'))   # 以post请求的表单数据<QueryDict: {'username': ['122'], 'password': ['12']}>
    return render(request, 'login.html')

需要取出所有的值时,可以使用getlist取值

print(request.GET)
print(request.GET.get('a'))
print(request.GET.get('b'))
print(request.GET.get('c'))
print(request.GET.getlist('c'))

pycharm链接数据库
三个位置查找数据库相关
	1.右侧上方database
	2.左下方database
	3.配置里面的plugins插件搜索安装
注意:	
	都没有再没有卸载pycharm重新装	

连接成功

Django连接mysql

Django自带的sqlite3是一个小型的数据库,功能比较少,主要是用于本地测试。实际项目都会替换它的

1.修改配置文件中数据库设置成django连接MySQL

2.手动改动将默认mysqldb改为pymysql
django默认用的是mysqldb模块链接MySQL, 但是该模块的兼容性不好 需要手动改为用pymysql链接,需要指定模块

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',
        'NAME': 'db5',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': '12345',
        'CHARSET': 'utf8',

    }
}

​ 2.1 django1.X版本需要在项目目录下或者app目录下的__init__.py编写代码

import pymysql
pymysql.install_as_MySQLdb()

orm介绍

orm:对象映射模型

在Django中操作数据库时,就不在用sql语句了,而是使用面向对象中的语法来操作

缺点:代码封装的程序太高,导致执行效率下降。

类名;就是sql当中的表名

对象:就是一条记录

属性:就是代表一个字段

我们的orm在models.py文件中编写

from django.db import models


class Userinfo(models.Model):   # 类似与表名
    username = models.CharField(max_length=32)
    # 类似于usernmae varcher(32)
    password = models.CharField(max_length=32)

输入迁移:python manage.py makemigrations,此时,还不足以创建,只是生成迁移的记录


 

继续输入 python manage.py migrate,这样就创建完毕了

我们打开navicat查看

这样一个完整的使用Django创建数据库就完成了

Django操作mysql的增删改查

增加:直接在下面接着创建即可

from django.db import models


class Userinfo(models.Model):   # 类似与表名
    username = models.CharField(max_length=32, verbose_name='用户名')
    # 类似于usernmae varcher(32)
    password = models.CharField(max_length=32, verbose_name='密码')
    salary = models.IntegerField(verbose_name='价格', default=0)

删除:

直接删除就行

from django.db import models


class Userinfo(models.Model):   # 类似与表名
    username = models.CharField(max_length=32, verbose_name='用户名')
    # 类似于usernmae varcher(32)
    password = models.CharField(max_length=32, verbose_name='密码')

修改:直接修改

from django.db import models


class Userinfo(models.Model):   # 类似与表名
    username = models.CharField(max_length=32, verbose_name='用户名')
    # 类似于usernmae varcher(32)
    password = models.CharField(max_length=32, verbose_name='密码')
    salary12 = models.IntegerField(verbose_name='价格', default=0)

查看:使用navicat查看即可

注意,每次修改之后必须要在

terminal中重新输入makemigrations和migrate即可

数据的增删改查(insert,updata,delete,select)

在pycharm中Toots中打开之后的页面就可以无需使用python manage.py 了直接输入makemigrations就可以

后面的[appname]如果不写的话默认是当前目录下的所有的文件

变量的渲染
"""变量的渲染"""


def ab_rander(request):
    user_dict = {'username': 'kiki', 'password': 123}
    return render(request, 'ab_rander.html', context={'user_dict': user_dict})
“”“当有多个变量时,我们可以使用”“”

    return render(request, 'ab_rander.html', locals())

有多个变量时,我们可以使用locals()函数里的所有的局部变量就等同于与

def ab_rander(request):
    user_dict = {'username': 'kiki', 'password': 123}
    print(locals())
    # return render(request, 'ab_rander.html', context={'user_dict': user_dict})
    return render(request, 'ab_rander.html', locals())
"""就等于:{'request': <WSGIRequest: GET '/ab_rander/'>, 'user_dict': {'username': 'kiki', 'password': 123}}"""

取值

在HTML文件中使用{{}}来进行取值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.3.0/css/bootstrap.css" rel="stylesheet">
    <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.3.0/js/bootstrap.js"></script>
</head>
<body>
{{user_dict}}
{{ user_dict.username}}
{{user_dict.password }}
</body>
</html>

得到的结果

用户表单的添删改

修改:

修改分析:1. 先确定修改的值

                  2.通过主键id值携带到后端

                  3.通过后端的主键id 去查询数据

                  4. 把查询到的数据渲染到页面中

                  5. 把修改之后的数据提交到后端,在进行修改

views文件

def adit(request):
    adit_di = request.GET.get('id')
    adit_obj = models.Userinfo.objects.filter().first()
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        gender = request.POST.get('gender')

       """第一种修改方式"""

        affect_ross = models.Userinfo.objects.filter(id=adit_di).update(username=username,password=password,gender=gender)
        print(affect_ross)
        return redirect('/userinfo/')
    return render(request, 'adit.html', locals())

  """第二种方式"""

        adit_obj.username=username
        adit_obj.password=password
        adit_obj.gender=gender
        adit_obj.save()   # 进行保存

html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet">
    <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap3.3.7/js/bootstrap.js"></script>
</head>
<body>
<div class="container">
    <div class="row">
        <h1 class="text-center">这是标题</h1>
        <form action="" method="post">
           <div class="form-group">
                用户名 <input type="text" class="form-control" name="username" value="{{ adit_obj.username}}">
            </div>
            <div class="form-group">
                密码 <input type="password" class="form-control" name="password" value="{{ adit_obj.password }}">
            </div>
            <div class="form-group">
                性别 <input type="gender" class="form-control" name="gender" value="{{ adit_obj.gender }}">
            </div>
             <div class="form-group">
                 <input type="submit" class="btn-success btn-block" value="提交">
            </div>
        </form>
    </div>
</div>
</body>
</html>

删除

def delete_1(request):
    """接受前端传输的id值"""
    """第一种方式"""
    delete_id = request.GET.get('id')
    # models.Userinfo.objects.filter(pk=delete_id).delete()
    """第二种方式"""
    delete_obj = models.Userinfo.objects.filter(pk=delete_id).first()
    delete_obj.delete()
    return redirect('/userinfo/')

添加 

def add(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        gender = request.POST.get('gender')
        # """操作数据库添加数据"""
        # add_info = models.Userinfo.objects.create(username=username, password=password, gender=gender)
        # print(add_info)
        """第二种方式"""
        add_obj = models.Userinfo(username=username, password=password, gender=gender)
        add_obj.save()
        return redirect('/userinfo/')
    return render(request, 'add.html')

### 回答1: Django基础教程PDF是一本详细讲解Django框架的书籍。Django是一个基于Python的高效Web应用开发框架,使用Django可以快速开发高质量、安全且易维护的Web应用程序。这本书从Django基础概念、安装、配置、模型、视图、模板、表单、认证、管理等方面,详细解释了如何使用Django进行Web应用开发。 其中,书籍的第一部分主要讲解了Django框架的基础知识,包括Django的架构、安装配置、虚拟环境、应用以及包管理等等。第二部分则详细阐述了Django的各种模型,包括Model、QuerySet以及Django ORM的操作等。第三部分则重点讲解了Django的视图,包括视图函数、URL路由以及视图的响应等等。第四部分则阐述了Django的模板系统,包括模板语言、模板渲染以及静态文件等。第五部分讲解了Django的表单系统,包括表单类的定义、视图函数的编写以及表单的提交和验证等。第六部分则深入讲解Django的认证系统、权限管理以及用户注册等内容。最后一部分则介绍了Django的管理后台、中间件、缓存、测试和部署等方面的内容。 总之,Django基础教程PDF对于想要学习并掌握Django框架的开发者来说是一本非常好的入门书籍。它详细介绍了Django框架的整个开发流程,给予开发者夯实的理论基础和实操能力,让开发者能够高效地使用Django框架进行Web应用开发。 ### 回答2: Django是一个高效的Python Web应用程序框架,它的特点是快速开发、可拓展性和丰富的功能性。对于初学者来说,学习Django框架并不是一件容易的事情,因此《Django基础教程》成为了很多开发者必备的学习资料。 《Django基础教程》详细介绍了Django框架的各种概念和操作方法,包括了模型、视图、模板、表单、路由等方面的基础知识。这本教程以实践为主,让读者通过自己手写一个简单的博客系统来获取对Django框架的全面认识。 教程的阅读需要基本的Python编程知识,因为它是使用Python语言编写的。在读完本教程后,读者可以掌握Django框架的开发流程,了解Django的中间件和模型、视图、模板的关系,掌握如何与数据库进行交互以及如何使用Django表单等。 值得一提的是,《Django基础教程》是一本中文教程,将一些比较抽象的概念解释得十分清楚易懂。而且它还针对Django 2.x 版本进行了详细介绍,非常贴近当前开发环境,可以让读者快速开发出一个简单的Web应用程序。 总而言之,《Django基础教程》是一本非常优秀、权威、全面的Django框架学习资料,它的内容详尽,范例丰富,让读者学习起来既轻松而又有深度。对于初学者来说,它是一个不容错过的学习宝典。 ### 回答3: Django是一个流行的Python Web框架,已经成为许多Web应用程序开发人员的首选。有很多教程和资源可用,其中包括Django基础教程,可作为入门学习Django的教材。 这本教程的重点是了解Django基础知识,例如Django框架的架构、模型-视图-控制器(MVC)模式、Django模型和Django视图等。它涵盖了创建新的Django项目,如何在Django项目中创建和管理应用程序,以及如何利用Django模板和表单在网页中呈现和处理数据。 该教程还提供了一些简单的应用程序示例,如博客和投票应用程序,这些教程旨在帮助读者嵌入并了解Django的工作原理。 在学习Django基础教程时,读者将学习如何编写干净、可读、可扩展和可维护的代码。这是应用程序开发中的最佳实践之一,有助于确保应用程序的可靠性。 总之,Django基础教程是入门学习Django框架的好材料,它能够为初学者提供一些基本的理解和编程技能,同时也提供了一些实用而有趣的示例,帮助学习者了解和熟悉Django框架的工作方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值