首页 > 其他分享 >初识django

初识django

时间:2023-02-21 11:46:32浏览次数:40  
标签:py Django 初识 dict home django 路由

目录

Django简介

Django,发音为[`dʒæŋɡəʊ]

django 是用 python 语言写的开源 web 开发框架,并遵循 MVT 设计模式。

诞生历史: 劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005年7月在 BSD 许可证下发布。这个名称来源于比利时的爵士音乐家 DjangoReinhardt,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。

由于 Django 在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志 SDTimes 评选为2013SDTimes100,位列"API、库和框架"分类第6位,被认为是该领域的佼佼者。

Django 的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django 有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django 具有很强的可扩展性。它还强调快速开发和 DRY ( Do Not Repeat Yourself )原则。

Django版本

image
Django版本问题
如上图所示,django各个稳定版都有LTS标识,在使用时,建议使用稳定版本。而django大概9个月左右就会出一个稳定版本。

django 1.x   同步
django 2.x   同步
django 3.x   支持异步
django 4.x   支持异步

Django基本使用

Django下载安装

django的下载
# 使用pip下载模块会自动解决依赖问题
pip3 install django==版本号  # 注意不指定版本,会直接下载最新版
# 验证是否安装成功,在cmd中输入django-admin即可,输出结果如下
Type 'django-admin help <subcommand>' for help on a specific subcommand.

Available subcommands:

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    runserver
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver
Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.).

Django基本操作

命令行创建并启动Django项目

# 在命令行中创建项目
django-admin startproject myDjangoProject
# 启动项目(不加IP与PORT则为默认127.0.0.1:8000)
cd myDjangoProject
python manage.py runserver IP:PORT

PyCharm创建并启动Django项目

  • 创建完成后,需要修改settings.py中的配置,如下:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        #'DIRS': [BASE_DIR / 'templates'],  # 我用的2.2.x版本的,需要修改此配置,否则启动项目会报错
        'DIRS': [os.path.join(BASE_DIR, 'templates'],  # 自己拼接下路径
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

在Django中创建app

  • Django是一个大的框架,APP是在这个框架中的各个功能。
# 创建一个Djaongo APP
python manage.py startapp app01
# 创建完成以后,需要注册进Django配置文件中
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 添加刚刚创建的APP,也可以直接写缩写app01
    'app01.apps.App01Config',   
]

Django主要目录结构

djangoProject1
    djangoProject1
        settings.py   配置文件
        urls.py       路由配置文件
        wsgi.py       网关文件
        asgi.py       异步功能文件(django3.x以上有)
    manage.py         django启动文件
    db.sqllite3       自带数据库
    app01             应用目录
        migrations    存储数据库相关记录
        admin.py      django内置后台管理功能
        apps.py       注册app相关
        models.py     模型层,与数据库相关
        tests.py      内置测试文件
        views.py      视图层,存储视图函数/视图类
    templates         模板层,存储html文件(命令行不会自动创建,且需要在settings.py中TEMPLATES中添加配置)

Django三板斧

render          # 返回html页面
HttpResponse    # 页面返回一个字符串
redirect        # 重定向网页链接

创建第一个页面

三板斧之render的使用

# 1. 在路由层urls.py中添加一个路由
# 2. 导入视图层
from app01 import views
urlpatterns = [
    path('admin/', admin.site.urls),
    # 3. 添加一个路由
    path('home/', views.home_func),
]

# 4. 在视图层views.py中创建对应函数
from django.shortcuts import render, HttpResponse, redirect
def home_func(request):
    return render(request, 'home.html')

# 5. 在模板层创建对应的home.html文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>Hello World</h1>
</body>
</html>
# 最后打开页面,可以看下面的截图

三板斧之HttpResponse使用

# 1. 路由层urls.py创建对应路由
from app01 import views
urlpatterns = [
    path('admin/', admin.site.urls),
    # 添加一个路由
    path('home/', views.home_func),
    # 添加HttpResponse测试路由
    path('index/', views.index_func),
]
# 2. 在视图层添加对应函数
from django.shortcuts import render, HttpResponse, redirect
def index_func(request):
    return HttpResponse('Hello World,I am HttpResponse!')
# 3. 直接打开相应页面,可以看到效果,如下图

向前端发送数据

def home_func(request):
    # 定义一个字典
    user_dict = {'name': 'KingKong', 'age': 18, 'job': 'Computer'}
    # 在向前端返回时,返回一个字典即可,字典的键可随意定义一个名字,后面的值为返回的字典,
    return render(request, 'home.html', {'d1': user_dict})
    # 如果返回的字典数据太多,也可使用locals进行返回

# 页面接收数据
<body>
    <h1>Hello World</h1>
    <p>{{ d1 }}</p>
    <p>{{ d1.name }}</p>
    <p>{{ d1.age }}</p>
    <p>{{ d1.job }}</p>
</body>
# 此时页面返回信息如下:
Hello World
{'name': 'KingKong', 'age': 18, 'job': 'Computer'}
KingKong
18
Computer


# 也可以使用locals()函数向前端传输所有数据
def home_func(request):
    user_dict = {'name': 'KingKong', 'age': 18, 'job': 'Computer'}
    my_dict = {'name': 'TomCat', 'age': 3, 'hoppy': 'mouse'}
    return render(request, 'home.html', locals())
# 前端代码
<body>
    <h1>Hello World</h1>
    <p>{{ user_dict.name }}</p>
    <p>{{ user_dict.age }}</p>
    <p>{{ user_dict.job }}</p>
    <p>{{ my_dict.name }}</p>
    <p>{{ my_dict.age }}</p>
    <p>{{ my_dict.hoppy }}</p>
</body>>
# 前端返回结果
Hello World
KingKong
18
Computer
TomCat
3
mouse

三板斧之redirect

# 1. 路由层配置路由
    path('test/', views.test_func),
# 2. 视图层配置对应视图
def test_func(request):
    return redirect('https://www.baidu.com/')  # 重定向到外部链接
    return redirect('/index/')  # 重定向到自己的路由
# 此时访问http://127.0.0.1/test/时,则会自动跳转至https://www.baidu.com/页面中

标签:py,Django,初识,dict,home,django,路由
From: https://www.cnblogs.com/smyz/p/17124180.html

相关文章

  • Python数据分析pandas之dataframe初识
    Python数据分析pandas之dataframe初识声明与简介pandas是一个基于python的、快速的、高效、灵活、易用的开源的数据处理、分析包(工具)。。pandas构建在numpy之上,它通过Data......
  • Django丨聚合与分组查询
    聚合查询聚合查询函数时对一组值执行计算,并返回单个值Django使用聚合查询前要先从django.db.models引用Avg、Max、Min、Count、Sum(首字母大写)fromdjango.db.modelsim......
  • django的部署在centos
    虚拟环境#virtualenv是一个创建独立python环境的工具sudopipinstallvirtualenv#virtualenvwrapper将所有的虚拟环境统一管理,留意安装路径后面要用sudopipinstall......
  • Django模型 存列表
    在Django中存储列表的一个简单方法是将其转换为JSON字符串,然后将其保存为模型中的文本。然后,您可以通过将(json)字符串转换回python列表来检索该列表 ......
  • Django数据库操作
    1、增#方式一category=models.Category(name='Python')#增加一条name是'Python'的一条数据category.save()#方式二models.Category.objects.create(name='Lin......
  • Django
    wsgirefwsgiref模块是内置模块,将请求的数据进行封装,组成键值对格式fromwsgiref.simple_serverimportmake_serverdefrun(env,response):''':paramen......
  • [django]drf入门004 过滤排序分页(转载)
    原文:https://pythondjango.cn/1.分页目录为什么要分页?DRF提供的分页类PageNumberPagination类LimitOffsetPagination类CursorPagination类函数类视图中使用分......
  • django中使用celery,模拟商品秒杀。
    Celery是Python开发的简单、灵活可靠的、处理大量消息的分布式任务调度模块 安装:pipinstallcelery#安装celery库pipinstallredis#celery依赖于......
  • 1 [初识]Vue3教程简介与Hello World编写 原创
    阅读目录​​前置知识​​​​下载VSCode​​​​编写第一个HelloWorld​​​​直接引入Vue3.x源码​​前置知识但是你还是需要会下面最基本的知识:1、HTML:超文本标记语......
  • django修改认证模型类
    1.我在一个子应用下面创建了一个apps目录,且在apps下又创建了一个子应用users,结构如下图:2.在users的models.py中fromdjango.dbimportmodelsfromdjango.contrib.auth......