Django学习笔记〇二——第一个Django项目

我们在上一章里从Web服务入手,讲到了我们这段时间要学的对象——Django,那么今天就来用Django写一个最简单的项目!

事前说明一点:今天的示例中的路径结构以及路径名称不是按照规范来的,先实现功能,具体问题后面再说怎么搞!

Django的安装

要编写一个Django项目,首先是什么呢?当然是先安装。Django有各种版本,本机装的是2.0.13, 这里还有个小插曲

原本机子上的Django是1.11.13的但是Django1.11与Python3.7不兼容,其实改一段代码也是可以的,但是这里懒得改了,直接通过pip升级到2.0.13

pip install --upgrade Django==2.0.13

如果没有安装过Django,也可以直接通过安装(把上面的指令去掉--upgrade就可以了)。

安装完成以后,在终端里执行一下下面的指令,看看环境变量是否配置成功(如果pip都能用应该是没问题的)

django-admin 

如果出现下面的回复说明安装正常,否则配置一下环境变量就可以了。

创建项目

在安装完包以后,我们可以先创建一个项目。 创建目录的方法有多种,可以通过安装过pycharm的可以通过pycharm直接创建,由于机子上只安装了vscode,这里讲下在终端用命令来创建。

进入我们需要创建项目的路径,这里是下面的目录结构

 可以直接运行下面的命令来创建项目

D:\python\Django学习\test>django-admin startproject firstPro

 然后看一看我们创建的项目结构

 首先,要修改的文件是urls.py

文件初始化了一个ulr对应的列表,

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]

这个列表就是我们在上一章节里的url_list,里面声明了所有的路径对应的func。现在需要的就是把路径和函数都写在这个文件里。

但是我们不用的path函数,我们要用另一个url的解析方式,所以要改一下,然后加上对应的函数,还有url列表,注意列表中用到了正则表达式

from django.contrib import admin
from django.urls import path                    #这个模块就先不用了

from django.conf.urls import url                #要导入这个模块
from django.shortcuts import HttpResponse       #利用这个模块可以直接发送包含head的正文

def resp(url):
    return HttpResponse('HelloWorld!')          #这里就利用了模块发送了数据


urlpatterns = [             
    url(r'^firstpage/', resp),                  #这里改了一下,把原来的path改成了url
]

下面在终端里运行下生成项目的manager文件,看看结论

D:\python\Django学习\test\firstPro>python manage.py runserver

 我们访问一下要求的地址:注意要加路径,看看,结论

加载HTML文件

通过上面一系列的操作我们已经可以使用Django创建Web服务了,但是正常使用中没有人是用Web服务端发送一段固定的字符串的,最起码也是个HTML文件,那么我们要怎么做?

加载HTML文件

首先要创建一个文件夹,这个文件夹放在项目文件夹下,和那个manager.py文件在同一级。把这个文件夹起个名字叫HtmlFiles,意思就是里面放的都是html文件。然后我们放一个html文件在里面。

html文件就随便先创建一个吧,就用上一章的那个登录的界面

<!-- 文件名login.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div>
    <p><label for=''>姓名</label><input type="text"></p>
    <p><label for=''>密码</label><input type="text"></p>
    </div>
    <div><button>登录</button></div>
    <div>时间:@@@</div>    <!--在Python中用字符串替换@@@-->
</body>
</html>
login.html

比价笨的方法是我们可以在urls.py这个文件中添加一个读取html文件的函数,可是这么做是比较笨的,这么常用功能为什么开发Django的工程师们会想不到呢?所以这里要用另外一种方法

指定html存放的路径

由于我们把html文件放在一个固定文件夹下,所以我们只需要设置好这个文件夹的位置就好了,在哪里设置呢?

看看那个setting.py的文件,里面有一个列表(TEMPLATES,列表第一项为一个字典),放置了所以和html文件的相关设置,我们只需要把Dirs对应的value指定好就好了。看看前面,有个变量叫BASE_DIR,就是项目的根目录的位置。我们只需要把刚才的HtmlFiles加上就可以了

'DIRS': [os.path.join(BASE_DIR,'HtmlFiles')],

还要注意这里用的方法,我们没有用简单的字符串连接的方式,因为在windows下和linux下的路径分隔符是不同的,如果在win上调试完成后移植到服务器上,就出bug了。

读取 html文件

知道了html文件的存储路径以后,我们就可以利用Django提供的接口直接调用html文件了

from django.shortcuts import render             #这个模块可以直接掉html文件

def login(url):
    return render(url,'login.html')             #直接调用html文件

urlpatterns = [             
    url(r'^firstpage/', resp),                  #指定url路径
    url(r'^login/',login)
]

再运行一下

D:\python\Django学习\test\firstPro>python manage.py runserver

 成功。

有静态文件的HTML

一般情况下HTML文件只保存了一个大致的框架,还有一些图片、css、js文件什么的,那么这些文件要怎么调用呢?

我们创建一个文件夹,和HTML文件夹路径一样,文件夹名称叫StaticFiles,表名里面存放都是静态文件,和html文件的调用一样,在setting.py文件里我们也要声明这个地址,直接拉到最下面,有个变量

 后面的字符串就是我们创建的文件夹的名称。在下面重新创建个变量,一定要注意变量名及大小写不要错,注意变量名及大小写!注意变量名及大小写!!注意变量名及大小写!!!

STATICFILES_DIRs = [
    os.path.join(BASE_DIR,'StaticFiles')
]

要注意的是下面的关系,上面的是html文件中调用css的地方,下面的是setting.py文件

然后随便写一个css文件,因为我们前面的html文件里用了div和button标签,这里就把这两个标签效果改一下

/* 文件名:login.css */
button {color:red;
        font-weight: 30px;}
div {background-color: yellow}

然后把调用css的命令也放在html里

这样再运行,就能实现html中静态文件的调用了

 就这样,第一个Django项目就完成了!

猜你喜欢

转载自www.cnblogs.com/yinsedeyinse/p/12341978.html