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

简介:

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整个的工作流程是怎样的,当然我也把图画好了,如下图所示:

wKiom1kVUV2gV8KgAACl4Gn8VtE145.png

解释下上面的图是如何工作的,先来拟这样一个环境,你打开了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欢迎页面。

django-runserver

更改这个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内容如下

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

<ul>
    <!-- 循环传过来的所有用户,显示其用户名 -->
    {% for user in all_user %}
        <li>{{ user.name }}</li>
    {% endfor %}
</ul>

</body>
</html>

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/登录后台,输入我们刚才创建好的用户和密码

django-admin

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

add-user

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










本文转自 Edenwy  51CTO博客,原文链接:http://blog.51cto.com/edeny/1924998,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
Linux 数据库 数据安全/隐私保护
Python web Django快速入门手册全栈版,共2590字,短小精悍
本教程涵盖Django从安装到数据库模型创建的全流程。第一章介绍Windows、Linux及macOS下虚拟环境搭建与Django安装验证;第二章讲解项目创建、迁移与运行;第三章演示应用APP创建及项目汉化;第四章说明超级用户创建与后台登录;第五章深入数据库模型设计,包括类与表的对应关系及模型创建步骤。内容精炼实用,适合快速入门Django全栈开发。
98 1
|
4月前
|
数据采集 自然语言处理 Java
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
本文以反面教材形式,剖析了在使用 Playwright 爬取懂车帝车友圈问答数据时常见的配置错误(如未设置代理、Cookie 和 User-Agent),并提供了 Python、Java 和 .NET 三种语言的修复代码示例。通过错误示例 → 问题剖析 → 修复过程 → 总结教训的完整流程,帮助读者掌握如何正确配置爬虫代理及其它必要参数,避免 IP 封禁和反爬检测,实现高效数据采集与分析。
196 3
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
|
5月前
|
前端开发 JavaScript 关系型数据库
基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行
该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。
156 6
|
10月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
588 45
|
10月前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
328 2
|
10月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
148 1
|
11月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
182 4
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
510 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
701 4
|
12月前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
393 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面

热门文章

最新文章

推荐镜像

更多