python Django的web开发实例(入门)


Posted in Python onJuly 31, 2019

一、创建一个项目

如果这是你第一次使用Django,那么你必须进行一些初始设置。也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集,包含了数据库配置、Django详细选项设置和应用 特性配置,具体操作步骤如下所示。

1.新建Django项目

python Django的web开发实例(入门)

python Django的web开发实例(入门)

选择sqlite数据库

python Django的web开发实例(入门)

2.创建网站模块app

python Django的web开发实例(入门)

python Django的web开发实例(入门)

3.测试新建的模块是否正常

python Django的web开发实例(入门)

Validating models...

0 errors found
March 12, 2014 - 10:26:53
Django version 1.6.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

服务器启动起来后,去浏览器输入网址:http://127.0.0.1:8000,你会看到一个令人愉悦的,柔和的淡蓝色 “Welcome to Django” 页面。表示它已正常工作!

python Django的web开发实例(入门)

让我们来看看mysite都创建了些什么:

python Django的web开发实例(入门)

这些文件分别是:
a、外层mysite目录只是你项目的一个容器。对于Django来说该目录名并不重要;你可以重命名为你喜欢的。
b、manage.py: 一个实用的命令行工具,可让你以各种方式与该Django项目进行交互。 
c、内层mysite目录是你项目中的实际Python包。该目录名就是Python包名,通过它你可以导入它里面的任何东西。(e.g.import mysite.settings).
d、mysite/__init__.py:一个空文件,告诉Python该目录是一个Python包。 
e、mysite/settings.py:该Django项目的设置/配置。 
f、mysite/urls.py:该Django项目的URL声明;一份由Django驱动的网站“目录”。 
g、mysite/wsgi.py:一个WSGI兼容的Web服务器的入口,以便运行你的项目。

更改端口号

默认情况下,:djadmin:runserver 命令启动的开发服务器只监听本地IP的8000端口。

如果你想改变服务器的端口,把它作为一个命令行参数传递即可。例如以下命令启动的服务器将监听8080端口:

C:\Users\D-117>cd F:\workspace\mysite\src\mysite\ #manage.py文件所在目录,即mysite项目下
C:\Users\D-117>f:
F:\workspace\mysite\src\mysite>python manage.py runserver 8080
Validating models...

0 errors found
March 12, 2014 - 10:31:27
Django version 1.6.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8080/
Quit the server with CTRL-BREAK.

如果你想改变服务器IP,把它和端口号一起传递即可。因此,要监听所有公共IP地址(如果你想在其他电脑上炫耀你的工作),请使用:

python manage.py runserver 0.0.0.0:8000

数据库设置

现在,编辑 mysite/settings.py 。 这是一个普通的Python模块,包含了代表Django设置的模块级变量。 更改DATABASES中'default'下的以下键的值,以匹配您的数据库连接设置。
a、ENGINE ? 从 'django.db.backends.postgresql_psycopg2', 'django.db.backends.mysql', 'django.db.backends.sqlite3', 'django.db.backends.oracle' 中选一个
b、NAME ? 你的数据库名。如果你使用 SQLite,该数据库将是你计算机上的一个文件;在这种情况下,:setting:NAME 将是一个完整的绝对路径,而且还包含该文件的名称。如果该文件不 
存在,它会在第一次同步数据库时自动创建(见下文)。当指定路径时,总是使用正斜杠,即使是在Windows下(例如:`C:/homes/user/mysite/sqlite3.db`) 。
c、USER ? 你的数据库用户名 ( SQLite 下不需要) 。
d、PASSWORD ? 你的数据库密码 ( SQLite 下不需要) 。
e、HOST ? 你的数据库主机地址。如果和你的数据库服务器是同一台物理机器,请将此处保留为空 (或者设置为 127.0.0.1) ( SQLite 下不需要) 。 

如果你是新建数据库,我们建议只使用 SQLite ,将 ENGINE 改为 'django.db.backends.sqlite3' 并且将 NAME 设置为你想存放数据库的地方。 SQLite 是内置在 Python 中的,因此你不需要安装任何东西来支持你的数据库。

注意:

如果你使用PostgreSQL或者MySQL,确保你已经创建了一个数据库。还是通过你的数据库交互接口中的“CREATE DATABASE database_name;”命令做到这一点的。
如果你使用SQLite,你不需要事先创建任何东西 - 在需要的时候,将会自动创建数据库文件。

当你编辑 settings.py 时,将 TIME_ZONE 修改为你所在的时区。默认值是美国中央时区(芝加哥)。同时,注意文件底部的 INSTALLED_APPS 设置。它保存了当前 Django 实例已激活的所 
有 Django 应用。每个应用可以被多个项目使用,而且你可以打包和分发给其他人在他们的项目中使用。

默认情况下,:setting:INSTALLED_APPS 包含以下应用,这些都是由 Django 提供的:

  • django.contrib.auth ? 身份验证系统。
  • django.contrib.contenttypes ? 内容类型框架。
  • django.contrib.sessions ? session 框架。
  • django.contrib.sites ? 网站管理框架。
  • django.contrib.messages ? 消息框架。
  • django.contrib.staticfiles ? 静态文件管理框架。

这些应用在一般情况下是默认包含的。

所有这些应用中每个应用至少使用一个数据库表,所以在使用它们之前我们需要创建数据库中的表。要做到这一点,请运行以下命令:python manage.py syncdb,具体操作下面会阐述。

至此,项目开发环境建立好了,我们可以开工了。

二、创建模型

4.编辑代码

4.1修改blog.models.py

from django.db import models
from django.contrib import admin

# Create your models here.
class BlogPost(models.Model):
  title = models.CharField(max_length = 150)
  content = models.TextField()
  timestamp = models.DateTimeField()
  
class BlogPostAdmin(admin.ModelAdmin):
  list_display = ('title', 'content', 'timestamp')

admin.site.register(BlogPost, BlogPostAdmin)

我们将创建一个BlogPost模型,包含title、content、timestamp三个字段。每个模型都继承自django.db.models.Model子类的类来描述。 每个模型都有一些类变量,每一个类变量都代表了一个数据库字段。

每个字段由一个 Field 的实例来表现 ? 比如 CharField 表示字符类型的字段和 DateTimeField 表示日期时间型的字段。这会告诉 Django 每个字段都保存了什么类型的数据。

每一个 Field 实例的名字就是字段的名字(如: title、content、timestamp),其格式属于亲和机器式的。在你的 Python 的代码中会使用这个值,而你的数据库会将这个值作为表的列名。

4.2修改blog.views.py

# Create your views here.
from django.template import loader,Context
from django.http import HttpResponse
from blog.models import BlogPost

def archive(request):
  posts = BlogPost.objects.all()
  t = loader.get_template('archive.html')
  c = Context({'posts': posts})
  return HttpResponse(t.render(c))

4.3修改mysite.setting.py,找到下面部分进行修改

INSTALLED_APPS = (
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'blog',
)

4.4修改mysite.urls.py

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

from blog.views import archive

urlpatterns = patterns('',
  # Examples:
  # url(r'^$', 'mysite.views.home', name='home'),
  # url(r'^blog/', include('blog.urls')),

  url(r'^admin/', include(admin.site.urls)),
  url(r'^blog/', archive),
)

5.建立样式网页模板

请在包blog下添加templates文件夹,并在templates下建立两个网页文件:archive.html和base.html

5.1编辑archive.html

{% extends "base.html" %} 
{% block content %} 
{% for post in posts %} 
<h1>{{ post.title}}</h1> 
<p>{{ post.content }}</p>
<p>{{ post.timestamp|date:"1, F jS"}}</p>
{% endfor %} 
{% endblock %}

5.2编辑base.html

<html> 
 <style type="text/css"> 
  body { color: #edf; background: #453; padding: 0 5em; margin:0 } 
  h1 { padding: 2em lem; background:#675 } 
  h2 { color: #bf8; border-top: 1px dotted #fff; margin-top: 2em } 
  p { margin: lem 0 } 
 </style> 
 <body> 
  <h1><center>Alexia's Blog</center></h1> 
  {% block content %} 
  {% endblock %} 
 </body> 
</html>

三、同步数据库

python Django的web开发实例(入门)

设置你的账号和密码,为登陆blog的管理后台作准备。

Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'd-117'): root
Email address: root@qq.com
Password: root
Password (again): root
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
Finished "F:\workspace\mysite\src\mysite\manage.py syncdb" execution.

四.运行测试

登陆界面,登陆账号和密码是初始化数据库的时候设定的。

python Django的web开发实例(入门)

登录成功后跳转到下面页面:

python Django的web开发实例(入门)

在该页面可以添加blog文章:

python Django的web开发实例(入门)

发布成功后,输入网址:http://127.0.0.1:8000/blog/进行查看,测试成功!

python Django的web开发实例(入门)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 流程控制实例代码
Sep 25 Python
在Python中使用元类的教程
Apr 28 Python
Python语言的面相对象编程方式初步学习
Mar 12 Python
python matplotlib画图实例代码分享
Dec 27 Python
Python从使用线程到使用async/await的深入讲解
Sep 16 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
Python如何优雅获取本机IP方法
Nov 10 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
python爬虫实例之获取动漫截图
May 31 Python
keras中的loss、optimizer、metrics用法
Jun 15 Python
PyCharm 光标变成黑块的解决方式
Feb 06 Python
Python&Matlab实现樱花的绘制
Apr 07 Python
Flask框架模板继承实现方法分析
Jul 31 #Python
Flask框架模板渲染操作简单示例
Jul 31 #Python
opencv导入头文件时报错#include的解决方法
Jul 31 #Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
Jul 31 #Python
Django上使用数据可视化利器Bokeh解析
Jul 31 #Python
Flask框架单例模式实现方法详解
Jul 31 #Python
pycharm配置当鼠标悬停时快速提示方法参数
Jul 31 #Python
You might like
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
js module大战
2019/04/19 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
python的绘图工具matplotlib使用实例
2014/07/03 Python
Python3中的2to3转换工具使用示例
2015/06/12 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
SQL面试题
2013/04/30 面试题
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
农民工创业典型事迹
2014/01/25 职场文书
《草原》教学反思
2014/02/15 职场文书
办公室主任职责范本
2014/03/07 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
遗嘱格式范本
2015/08/07 职场文书