python+django(一)基本入门

2022-04-02  本文已影响0人  minlover

于网页相关基础概念的解释: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 文件的路径。

上一篇下一篇

猜你喜欢

热点阅读