美文网首页
python+django(一)基本入门

python+django(一)基本入门

作者: minlover | 来源:发表于2022-04-02 13:34 被阅读0次

    于网页相关基础概念的解释:https://blog.csdn.net/kang_01/article/details/110151002

    django基础入门参考链接:https://zhuanlan.zhihu.com/p/24831528


    需求是:一个文件,放到网上,给用户分配账号后,用户可以登录下载文件。


    一、安装Django(windows系统)

    安装:

    pip install Django

    测试装好了:

    import django

     print(django.get_version())

    进到工作文件夹(自己建的目录,我的是web-test):

    django-admin startproject mysite001

    看到生成文件夹‘web-test\mysite001’,并且里面包含了一些初始化的文件。

    一个网站可以有很多的模块,以百度为例,有网页,有地图,有贴吧,每个模块的功能都相对独立,可以将它们看成一个一个的独立app,共同组成了mysite001这个项目。因此我们需要创建每个app的文件夹。进到mysite001文件夹中,运行下面命令,会多一个app001的文件夹。

    python manage.py startapp app001

    app001,存放指定app的文件夹

    mysite001,管理整个web的文件夹,web内容目前包含了一个app001

    manage.py,是django-admin的一个小包装,调用manage.py可以非常方便得执行诸如,新建APP,启动服务器等命令


    二、准备工作

    正式编写网站之前,还需要为网站结构做一些准备。

    (1)新建两个文件夹:static 和 templates:

    static:用于存放html<head>引入的css类,js类等文件,以及图片,声音等静态文件。大部分网页共用的静态文件可以直接存放在static目录下,如app001特别使用的文件,建议在static下新建文件夹app001单独存放。也可以下设image,sound等文件夹,专门管理某一类别的文件。方便管理!!

     templates:用于存放html类文件,同样的为每个app新建一个文件夹。

    (2)下面需要告诉Django各个组件之间的联系。

    ① “\mysite001\mysite001\settings.py”:

    INSTALLED_APPS = [

        'app001.apps.App001Config', # 增加app声明

        'django.contrib.admin',

        'django.contrib.auth',

        'django.contrib.contenttypes',

        'django.contrib.sessions',

        'django.contrib.messages',

        'django.contrib.staticfiles',

    ]

    新增代码段通俗解释,告诉Django,涉及app001的指令,去到app001文件夹寻找。注意App001Config,开头字母大写。(app001文件夹中已经生成了一个apps.py文件,并定义了一个类App001Config。以上这些Django都帮我们做好了,无需重复劳动)

    ② 补充templates关联设置:

    TEMPLATES = [

        {

            'BACKEND': 'django.template.backends.django.DjangoTemplates',

            '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,templates文件夹位置。

    ③ 修改系统时间为北京(上海)时间

    TIME_ZONE = 'Asia/Shanghai'

    ④ 补充static关联设置

    STATIC_URL = '/static/'

    STATICFILES_DIRS = [

        os.path.join(BASE_DIR, "static"),

    ]# 新增代码

    新增代码段解释,告诉Django,涉及{% load static %}命令,去static文件夹寻找。

    ⑤ 由于本章节还涉及不到数据库的使用内容,这里我们增加一段代码,将用户信息保存在缓存。

    SESSION_ENGINE ='django.contrib.sessions.backends.cache'

    SESSION_CACHE_ALIAS= 'default' 

    (3)分配好各个文件夹的路径,下面我们需要对网站的地址(url)进行统一调度。

    打开“mysite001\mysite001\urls.py”:

    from django.urls import path,include,re_path # 增加 include

    from django.contrib import admin

    urlpatterns = [

        re_path(r'^app001',include('app001.urls')), # 增加对应关系

        path(r'^admin/', admin.site.urls),

    ]

    以上新增的代码包含了一段正则表达式 r'^app001',符号 ^ 表示头部匹配。整段语句表示,若网站地址为"http://XXXXX/app001……" ,则该地址分配到"app001/urls.py"文件来处理。

    此时”app001/urls.py”目录下还没有这个文件,我们需要新建这个文件,来处理后续。

    注意:网上教程看到的是用from django.conf.urls import url,但是在Django 4版本之后,就没有url了,改为了re_path。所以用from django.urls import re_path(上面和下面修改的urls.py中都是)


    三、第一个简单的App

    (1)(接上文)新建”app001/urls.py”:

    from django.urls import re_path

    from . import views

    from django.conf import settings

    from django.conf.urls.static import static

    urlpatterns =[

        re_path(r'^$',views.index1,name='index1'), # 建立地址和视图的关联

    ]+static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

    这里,又看到了一个正则表达式 r'^$' ,分配到app001的url地址,再和 r'^$' 匹配。符号 $ 表示尾部匹配,再加上符号 ^ (头部匹配),^$表示匹配首页。

    这里我们建立了一个url和view的关系,即在首页地址“http://XXX/app001”页面上显示视图index1。

    最后为了方便管理,将这个首页的url命名为index1。这样,在html引用地址时,可以避免“http://xxx……”的硬编码,而是采用{% url ‘index1’ %}的形式,灵活得管理。

    (2)在”app001/urls.py”文件中建立了首页与index1视图的关系,但index1视图还未定义。打开“app001/views.py”:

    from django.shortcuts import render

    # Create your views here.

    def index1(request): #定义视图index1

        ans={} #创建一个字典

        ans['head']='hello world' # 赋值

        return render(request,'app001/firstpage.html',ans) # 输出字典

    上面代码的含义就是定义一个index1,向'templates/app001/firstpage.html'输出字典ans的值。

    新建 'templates/app001/firstpage.html',编写一个最简单的html,

    {{head}}

    {{}}是Django自带的服务器语言,表示提取双括号内变量的值。这里我们是提取ans['head']的值。


    五、运行服务器

    现在让我们将本机作为服务器,看看我们的网站吧

    python manage.py runserver

    我们的服务器地址在“http://127.0.0.1:8000/

    在浏览器地址栏输入地址“http://127.0.0.1:8000/app001”


    总结一下Django各个模块的作用:

    urls 负责 分配网页地址给views

    views负责 传递变量给templates

    templates收到变量值,展示给访客


    删除app

    1、删除app文件夹。

    2、删除setting.py 文件中的注册的应用。

    3、删除urls.py 文件的路径。

    相关文章

      网友评论

          本文标题:python+django(一)基本入门

          本文链接:https://www.haomeiwen.com/subject/upctsrtx.html