1Python全栈之路系列之Django初体验
admin
2023-03-24 03:40:34
0

Python全栈之路系列之Django初体验


Django不得不说在Python中是一个非常强大的全栈框架,而且入门也比较简单,只要你学完了基本的Django知识,接着再做一两个项目,不大不小就成,然后你再去学其它的框架你会发现,在那些小而美的框架中,你学起来将非常的快,因为你在学习Django的时候就已经学习并且体验过了Web开发流程,所以会有这么一个现象出现,有些新手朋友在学习FlaskTornado等小而美的框架时,很多概念不是很理解,比如ORM路由等,但你学Django就不会出现这种问题。


Django的历史

Django是从真实世界的应用中成长起来的,它是由堪萨斯(Kansas)州 Lawrence城中的一个网络开发小组编写的。 它诞生于2003 年秋天,那时Lawrence Journal-World报纸的程序员Adrian HolovatySimon Willison开始用Python来编写程序。

当时他们的World Online小组制作并维护当地的几个新闻站点, 并在以新闻界特有的快节奏开发环境中逐渐发展。这些站点包括有LJWorld.comLawrence.comKUsports.com, 记者(或管理层) 要求增加的特征或整个程序都能在计划时间内快速的被建立,这些时间通常只有几天或几个小时。因此,AdrianSimon 开发了一种节省时间的网络程序开发框架,这是在截止时间前能完成程序的唯一途径。

2005年的夏天,当这个框架开发完成时,它已经用来制作了很多个World Online的站点。当时World Online小组中的Jacob Kaplan-Moss 决定把这个框架发布为一个开源软件。

从今往后数年,Django是一个有着数以万计的用户和贡献者,在世界广泛传播的完善开源项目。原来的World Online的两个开发者(Adrian and Jacob)仍然掌握着Django,但是其发展方向受社区团队的影响更大。

摘录自djangobook3

Django访问流程

在学习Django之前让我们先来了解下Django的访问流程把,这是很重要的,便于你理解Django整个的工作流程是怎样的,当然我也把图画好了,如下图所示:

1Python全栈之路系列之Django初体验

解释下上面的图是如何工作的,先来拟这样一个环境,你打开了QQ空间,但是在你没有输入QQ账号和密码的情况下是不可以直接访问你的空间的,此时你需要输入账号密码才可以进入,假设你账号密码输出正确,自然而然的就进入了QQ空间,就以这个例子来描述上图的流程把:

  1. 用户打开了Google浏览器,输入QQ空间的URL,但是当前没有登录,需要输入账号密码,现在输入账号密码了,然后点击登录;

  2. 点击登录的这个请求首先会进入Django的路由系统(在路由前面其实还有中间件),代表你要访问哪一个资源,然后请求就被传给了对应路由的函数;

  3. 这个时候函数接到了用户传过来的账号密码,去数据库中(model,信号可以实现在数据库之前之后做些操作)做匹配;

  4. 当前用户名和密码正确,然后视图就会渲染页面;

  5. 把页面返回给浏览器,此时用户就进入了自己的QQ空间

安装Python

Django本身是纯Python编写的,所以安装框架的第一步是确保你已经安装了python2.x或者python3.x,你可以在https://www.python.org/downloads/这下载并安装python。

我这里已经安装好了Python3.x

$ python3 -V
Python 3.5.2

安装

目前我的操作系统是Mac并且已经配置安装好了pip3python3,我们可以直接使用pip来进行安装:

# 默认安装最近稳定版本
pip3 install django

指定安装django版本,这个知识虽然不是django内的,但还是要说一下

# 指定安装1.9版本
pip install django==1.9

目前最新稳定的版本是1.10,你可以进入Python解释器导入django模块来进行校验是否正确安装

>>> import django

如果在导入的时候没有报错就表示已经安装成功,否则你可以需要重新安装.

# 导入django
>>> import django
# 查看目前版本号
>>> django.get_version()
'1.10.5'

创建一个Django项目

django为我们提供了一个django-admin的指令,以方便与我们在命令行下创建django项目,可以使用django-admin --help查看该指令的帮助信息,当然如果你想这么做。

现在我们来看一下比较常用的一个参数把,这些参数都是通过django-admin --help得到的。

参数描述
startproject创建一个完整的项目
startapp创建一个app
runserver运行django为我们提供的http服务
shell进入待django环境的shell
makemigrations生成数据库命令
migrate执行生成好的数据库命令

然后让我们使用startproject来创建一个项目吧

$ django-admin startproject ansheng
$ cd ansheng/
$ ls
ansheng        manage.py

manage.py文件是一种命令行工具,允许你以多种方式与该Django项目进行交互,输入python manage.py help可以看到他为我们提供了那些指定,比如如下命令都是常用的:

指定描述
createsuperuser创建一个django后台的超级管理员
changepassword修改超级管理员的密码

貌似这两个也是最常用的,还有一个参数和上面django-admin --help是一样的, 请自行比较测试。

ansheng/settings.py该项目的全局配置文件,很重要。

ansheng/urls.py项目的路由配置文件,这是一个django项目的主入口文件。

还有一些其他不重要的文件就不做阐述了。

让Django项目运行起来

django内部是有一个内建的轻量的web开发服务器,在开发期间你完全可以使用内建的或者,从而免去了安装配置nginx或者apache等。

如果你还没启动服务器,请切换到你的项目目录里,运行下面的命令:

$ python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
August 08, 2016 - 11:29:42
Django version 1.10, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

这将会在端口8000启动一个本地服务器, 并且只能从你的这台电脑连接和访问。 既然服务器已经运行起来了,现在用网页浏览器访问http://127.0.0.1:8000/。 你应该可以看到一个令人赏心悦目的淡蓝色Django欢迎页面。

1Python全栈之路系列之Django初体验

更改这个Development Server的主机地址或端口

默认情况下,runserver命令在8000端口启动开发服务器,且仅监听本地连接。 要想要更改服务器端口的话,可将端口作为命令行参数传入:

python manage.py runserver 8080

通过指定一个IP地址,你可以告诉服务器–允许非本地连接访问。 如果你想和其他开发人员共享同一开发站点的话,该功能特别有用。0.0.0.0这个IP地址,告诉服务器去侦听任意的网络接口。

python manage.py runserver 0.0.0.0:8000

完成这些设置后,你本地网络中的其它计算机就可以在浏览器中访问你的IP地址了。比如:http://192.168.1.103:8000/

实例

这个例子中我们会涉及到django的多方面知识,比如后面几章会学习到的路由视图模型模板后台管理等知识点。

那么这是个什么例子呢?其实是一个很简单的例子,怎么个简单法儿,后台添加用户,前台展示用户,很简单吧,那我们接下来就来实操吧。

继上面创建好的项目ansheng之上我们在创建一个appusers:

$ python manage.py startapp users

初次之外我们还需要把app注册到我们的项目中,可以在ansheng/settings.py中找到INSTALLED_APPS字典,把刚创建的APP名字添加进去:

INSTALLED_APPS = [
    ......
    'users',
]

因为需要用到html,所以我们也需要配置模板路径文件了,先创建一个存放模板文件的路径

$ mkdir templates

继续编辑settings.py,找到TEMPLATES,把DIRS修改如下:

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

ansheng/urls.py中添加一条路由配置:

from django.conf.urls import url
from django.contrib import admin

# 导入app下面的视图函数users
from users.views import users

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # 指定路由对应的函数
    url(r'^users/$', users),
]

users/views.py视图函数内容如下:

from django.shortcuts import render

# 导入模型中的UserInfo表
from .models import UserInfo

# Create your views here.

def users(request):
    # 获取所有的用户
    all_user = UserInfo.objects.all()
    # 把用户信息和前端文件一起发送到浏览器
    return render(request, 'users.html', {'all_user': all_user})

template/users.html内容如下




    
    
    
    Document



             {% for user in all_user %}         
  • {{ user.name }}
  •     {% endfor %}

users/models.py配置文件

from django.db import models

__all__ = [
    'UserInfo'
]

# Create your models here.

class UserInfo(models.Model):
    name = models.CharField(max_length=30, verbose_name='用户名')
    email = models.EmailField(verbose_name='用户邮箱')

users/admin.py配置文件

from django.contrib import admin
from .models import *

# Register your models here.

# 把UserInfo注册到admin中
admin.site.register(UserInfo)

最后我们生成数据库:

$ python manage.py makemigrations
$ python manage.py migrate

创建超级管理员用户

$ python manage.py createsuperuser
# 用户名
Username (leave blank to use 'ansheng'): ansheng
# 哟箱地址,可以为空
Email address: 
# 密码
Password: 
# 确认密码
Password (again): 
Superuser created successfully.

打开http://127.0.0.1:8000/admin/登录后台,输入我们刚才创建好的用户和密码

1Python全栈之路系列之Django初体验

找到我们刚才添加的app,然后点击ADD添加一个或多个用户:

1Python全栈之路系列之Django初体验

继续打开http://127.0.0.1:8000/users/就能够看到刚才添加的用户了,你可以试着再添加一个用户然后刷新页面,看看是否会显示出来你刚刚新添加的用户,完。

#Python全栈之路 #Django


相关内容

热门资讯

DeepSeek塞进苹果本儿,... 文 | 字母AI 在agent时代最贵的是什么?是token。 一些重度agent使用者,一个月用...
中美将于5月12日—13日举行... 有记者问:近期有消息称,中美双方将很快举行下一轮经贸磋商,请问商务部是否有最新消息?答:经中美双方商...
华为申请语音交互方法专利,提升... 国家知识产权局信息显示,华为技术有限公司申请一项名为“一种语音交互方法和电子设备”的专利,公开号CN...
事关俄乌冲突,普京释放重要信号 据中国新闻网援引塔斯社报道,当地时间5月9日,俄罗斯总统普京在记者会上表示,他既不会主动提出、也不会...
藏语大模型亮相北京科博会 弥合... 新华社北京5月10日电 题:藏语大模型亮相北京科博会 弥合AI时代“数字鸿沟” 新华社记者郭沛然 对...
光帆带摄像头AI耳机本月开售,... 5月9日,光帆科技官方账号发布发售预热海报。海报显示,全球首款具备视觉感知能力的主动式AI耳机——光...
我国“太极计划”获关键突破 据新华社消息,记者5月9日从中国科学院力学研究所获悉,我国空间引力波探测“太极计划”传来新消息,科研...
武汉大学的声明,有点搞笑 就在刚刚,武汉大学出来发声明了。为什么发声明呢?主要的原因,就是前两天,OPPO发布的一个母亲节活动...
1.766亿独生子女的难题 他们是中国历史上最特殊的一代人。生于计划生育最严的年代,长在“一对夫妻一个孩”的时代。据中国社科院人...
女子出租屋凌晨疑遭陌生人闯入,... 极目新闻记者 郭奕据红星新闻报道,居住在杭州的女子小鱼(化名)在社交媒体上发布了一段拍摄于4月28日...