从零开始学Django

版权声明:笔记随便写写 https://blog.csdn.net/aaxin_666/article/details/86497008


借鉴参考Django 官方文档

欢迎来到Django学习基础

通过这个教程,我会带这你创建一个基本的web应用程序,首先先来了解一下Django,假设你已经安装了Django安装Django,且知道Django对应的版本

pip install pymysql
pip install django
python -m django --version

环境介绍

介绍一下开发环境,不同系统不同版本之间的开发其实大同小异,看个人的喜好,很多时候还没开始学就被环境配置吓到了,个人建议如果初学可以忽略一些配置,
我也会尽量跳出这些层面,尽量兼顾。

  1. python虚拟环境的配置 ,这个是为了防止不同Django版本的web应用程序发生冲突,几个版本之间的差异不是特别大,留意一下就好了。其实问题不大.安装难度 ** ,
  2. pycharm 因为后面的开发需要你不停地切换目录,有pycharm比较方便,安装难度 ** 难度在于在Ubuntu怎么可以快捷启动pycharm,直接安装是需要在终端启动的 cd到pycharm的bin 输入./pycharm.sh
  3. Django版本 Django是2.1的版本,安装难度 *
  4. 数据库 我使用的是mysql5.7,mysql算是比较主流的一个数据库,各方面支持比较好.安装难度 ** 问题在于初次启动时的密码可能出问题;
  5. 操作系统虚拟机Ubuntu,个人觉得终端用起来比较舒服 安装难度 * ;
    所有的安装都有教程,可自行百度,

开始

创建项目

运行以下命令:

django-admin startproject mysite

mysite就是你创建项目的名字
cd进入文件夹,运行命令:

cd mysite
tree

效果图值得注意的是,项目名字不要与python-Django内部的保留名冲突,例如test,Django之类的

这些目录与文件的用处

  • manage.py 是一个管理命令行工具,详细了解阅读
  • mysite 是一个文件夹,里面的 __init__表示这是一个python包,方便在项目其他文件中引入
  • setting.py Django项目的配置文件,
  • wsgi.py 是主要的浏览器与服务器交互的入口,请求与响应从这里交互,可以说很重要了。

测试一下Django上的简易服务器

python manage.py runserver

此时会生成一下内容:
内容值得注意的是:runserver 后面可以自己自定义自己的ip与port ,如果没有加上,那么默认就是 127.0.0.1:8000 ,这是在wsgi里面就决定的,
在你的浏览器里面输入: 127.0.0.1:8000.显示下面页面(如果在runserver后面加上了自定义的,那么同理输入自己定义的,)
启动成功这里获取本机ip命令:
linux

ifconfig

Windows

ipconfig

我是在虚拟机上启动的,现在在Windows上访问,提前的步骤是添加链接描述
在这里插入图片描述如果想了解更多runserver 点这个

创建一个应用

在Django中,其实在python中,包是非常重要的,这里的应用其实是一个包,

项目 VS 应用

项目和应用有啥区别?应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者简单的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用
请确定你现在处于 manage.py 所在的目录下,然后运行这行命令来创建一个应用

 python manage.py startapp vote

这里会创建一个vote目录

├── db.sqlite3
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-36.pyc
│   │   ├── settings.cpython-36.pyc
│   │   ├── urls.cpython-36.pyc
│   │   └── wsgi.cpython-36.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── vote
    ├── admin.py
    ├── apps.py
    ├── __init__.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py


vote这里缺少了一个文件 url.py,需要手动创建一个

MVC

Django遵循快速开发和DRY原则。Do not repeat yourself.
Django借鉴MVT框架,产生的MVC
核心在于:解耦,让他们之间的依懒性不那么强,增强代码的可移植性和替代性
models ------> 在models.py 中可以通过一系列的操作,去关联数据库。
views.py -------> 这里关联的就是视图,简单来说就是通过这个函数去操作呈现网页上的内容
C:控制器--------> 中转站,接受信息,传递信息

编写视图

开始编写第一个视图:
打开pycharm,找到你建立的项目mysite
打开vote下面的views.py

from django.http import HttpResponse

def index(request):
	return HttpResponse('这是第一个视图')

如果出现错误
这里需要提醒的是ALLOE_HOSTS = [] 这个需要注释掉

Django是如何匹配从url中返回给浏览器想要的数据的

首先:进入mysite/urls.py里面:

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

函数 include() 允许引用其它 URLconfs。每当 Django 遇到 :func:~django.urls.include 时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URLconf 以供进一步处理
这里表示的是当浏览器的url,传到mysite/urls.py 第一个参数是正则表达式,匹配到vote后,就会把后面传给
下面的vote/urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

此时这里接收到了url后面的一部分,进行匹配,

path函数:

path() 参数: route
route 是一个匹配 URL 的准则(正则表达式)。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。

这些准则不会匹配 GET 和 POST 参数或域名。例如,URLconf 在处理请求 https://www.example.com/myapp/ 时,它会尝试匹配 myapp/ 。处理请求
path() 参数: view
当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入
path() 参数: name
为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。
为你的url指定唯一的名字,相当于在上面加了一个标签,不管url怎么变,只引用name就行了

现在,运行页面

猜想一下:你要在页面上运行页面,应该在浏览器里面输入哪个url
现在理一下这几个的关系:
浏览器的url -------》mysite/urls.py--------》vote/urls.py------>调用视图views.index

python manage.py runserver  #这里我后面没有加ip:port,使用默认的

浏览器输入:127.0.0.1:8000/vote/index

mysite/urls.py接收,出去域名,剩下vote/index

匹配 vote ,将剩下index传入 vote.urls.py中去匹配

匹配index成功,返回调用views.index函数,index视图函数返回给浏览器 (‘这是第一个视图’)

如图:
效果图

猜你喜欢

转载自blog.csdn.net/aaxin_666/article/details/86497008