全栈开发系列学习2——django项目搭建
项目代码:http://yunpan.cn/cHajgT4HvgHqx (提取码:8350)
配置项目:
1. 首先确保你的机器安装了python和pip,这两种安装比较简单,这里就不说了。
2. 在你的机器上安装mysql服务,这个也不细说了。然后安装Mysql-python,只要输入命令”pip install MySQL-python”就可以了。
3. 解压项目文件代码。
4. 进入src文件夹下,输入”make install”这样会自动安装所有的依赖库。
5. 现在我们可以创建一个数据库:web_dev_tutorial
mysql -u <your username> -p<yourpassword>
注意用户名前面有空格,而密码前面是没有空格的,这一点格外注意。
在数据库中创建实例:
create database web_dev_tutorial
然后将数据库和我们的项目链接在一起,打开src/web_dev_tutorial/settings.py
找到以下配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': "web_dev_tutorial",
'USER': 'root',
'PASSWORD': 'root',
}
}
把相应的用户名密码改成你的数据库的用户名密码就可以了。
6. 现在我们可以载入一些测试数据到数据库。检查data文件夹是否有个叫parse.py的文件,还有一个文件夹是rawdata,里面包含了很多的文本文件。进入文件夹test,打开一个叫做config.py的文件,你会看到以下内容
`
MYSQL_HOST = ‘127.0.0.1’
MYSQL_PORT = 3306
MYSQL_USERNAME = ‘root’
MYSQL_PASSWORD = ‘root’
MYSQL_DB_NAME = ‘web_dev_tutorial’
make load`会自动擦除文本文件,并保存结果,这些结果也会被载入到数据库中。
同样把数据库用户名密码改成你相应的用户名密码就可以了。接着,在文件夹test下,输入
7. 在文件夹src下,输入”make”,你将会看到:
`
MYSQL_HOST = ‘127.0.0.1’
MYSQL_PORT = 3306
MYSQL_USERNAME = ‘root’
MYSQL_PASSWORD = ‘root’
MYSQL_DB_NAME = ‘web_dev_tutorial’
`
这样服务器就启动了,你就可以访问试试了。
不过这里有一个问题就是这个服务器只能在本机访问,如果我们想通过ip地址来访问的话,我们可以通过输入python manage.py runserver 0.0.0.0:8000
来启动服务器,这样我们就可以通过ip地址来访问服务器了。
一些注意事项
这个项目是一个博客平台,你访问过后就能够看的出来。为了简化设计它具有以下这些特点:
1. 我们的用户可以对博客进行相应的编辑操作。
2. 所有发表的文章都可以被所有用户看到,用户可以搜索他们感兴趣的博文。
3. 用户可以评论或者点赞。
4. 用户可以订阅其他用户的博文,从而受到更新通知。
展示代码
当你解压代码的时候,你应该可以看到以下的基本结构:
这有一些关键部分:
web_dev_tutorial文件夹
- settings.py 这个文件里面主要是一些基础配置,比如数据库连接,日志配置,模版和静态文件路径等等
- urls.py 这个文件定义了整个网站的路由。路由可以看作是从任何url到一个指定资源的路径。
wsgi.py 这个脚本文件是用来运行服务器。这个文件的内容我们可以暂时忽略。
app文件夹
这是一个应用。django支持多种应用同时存在一个相同的系统的中,允许他们执行不同的功能。这里我们只会拥有一个应用,所以我们介绍一下下面的文件:models.py 这个文件定义了Models.你可以把它们认为是数据库中的表格。一个例子如下所示:
`
class User(models.Model):
ROLE_ADMIN = 1
ROLE_AUTHOR = 2username = models.CharField(max_length=50)
email = models.CharField(max_length=50, unique=True)
password = models.CharField(max_length=50)
description = models.CharField(max_length=512, null=True)
role = models.SmallIntegerField()
deleted = models.BooleanField(default=0)
`
controllers.py 我们曾经说过,controller是为了响应某个动作的。在Django中,一个controller是一个函数响应客户端的请求并且响应一个对象。
urls.py 一个应用可以定义它自己的url路径。如果一个应用中的所有url都是有相同的前缀,那么你就可定义他们在这个应用中。
全栈开发系列学习2——django项目搭建的更多相关文章
- python 全栈开发,Day96(Django REST framework 视图,django logging配置,django-debug-toolbar使用指南)
昨日内容回顾 1. Serializer(序列化) 1. ORM对应的query_set和ORM对象转换成JSON格式的数据 1. 在序列化类中定义自定义的字段:SerializerMethodFie ...
- python 全栈开发,Day76(Django组件-cookie,session)
昨日内容回顾 1 json 轻量级的数据交换格式 在python 序列化方法:json.dumps() 反序列化方法:json.loads() 在JS中: 序列化方法:JSON.stringfy() ...
- python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)
昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...
- python 全栈开发,Day68(Django的路由控制)
昨日内容回顾 1 MVC和MTV MTV 路由控制层(分发哪一个路径由哪一个视图函数处理) V : views (逻辑处理) T : templates (存放html文件) M : model (与 ...
- python 全栈开发,Day67(Django简介)
昨日内容回顾 1. socket创建服务器 2. http协议: 请求协议 请求首行 请求方式 url?a=1&b=2 协议 请求头 key:value 请求体 a=1&b=2(只有p ...
- 巨蟒python全栈开发django2:初识django
今日内容大纲: 1.起飞版web框架 2.自定制框架的流程 3.jinja2模板渲染初识 4.MVC&&MTV 5.django版本介绍及django安装 6.django初识(一些操 ...
- python 全栈开发,Day118(django事务,闭包,客户管理,教学管理,权限应用)
昨日内容回顾 一.django事务 什么是事务 一系列将要发生或正在发生的连续操作. 作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行. 事务处理可以确保除非事务性单元内的所有操 ...
- python 全栈开发,Day84(django请求生命周期,FBV和CBV,ORM拾遗,Git)
一.django 请求生命周期 流程图: 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post, ...
- python 全栈开发,Day69(Django的视图层,Django的模板层)
昨日内容回顾 相关命令: 1 创建项目 django-admin startproject 项目名称 2 创建应用 python manage.py startapp app名称 3 启动项目 pyt ...
随机推荐
- 2018-08-15-weekly
Algorithm 5. Longest Palindromic Substring What 给定一个字符串s,找到s中最长的回文子字符串. 给定s的最大长度为1000. How 这是一道比较经典的 ...
- 文本框的SelectionDirection属性
代码实例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- Test 7.12 T2
题目描述 有一张 n 个点 m 条边的无向图,其中有 s 个点上有加油站.有 Q 次询问(a,b,c), 问能否开一辆油箱容积为 c 的车从 a 走到 b. 输入格式 第一行三个整数 n,s, ...
- BZOJ 3879: SvT 虚树 + 后缀自动机
Description (我并不想告诉你题目名字是什么鬼) 有一个长度为n的仅包含小写字母的字符串S,下标范围为[1,n]. 现在有若干组询问,对于每一个询问,我们给出若干个后缀(以其在S中出现的起始 ...
- 继续写高精!noip2012国王游戏。。。
国王游戏 题目描述: 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王 ...
- vue2.X 与 vue1.X 的区别
vue2.0: bower info vue http://vuejs.org/ 到了2.0以后,有哪些变化? 1. 在每个组件模板,不在支持片段代码 组件中模板: 之前: <template& ...
- Oracle DataGuard日志传输
1. 日志传输方式 有两种日志传输方式(ARC和LGWR),第一种是采用ARC进程传输日志,其示意图如下: 注:上图来自<大话Oracle RAC> 其大致过程如下: 1)主库:日志先写入 ...
- 纯文本编辑语言markdown
Markdown的主要目的是生成可以复制到网页或写入平台的HTML代码.但你不必那样使用它.Markdown也可以作为强大记笔记的基础,许多Markdown编辑可以将您的写作导出为其他格式,如Word ...
- scrapy-redis源码浅析
原文链接 前言 分析这个项目的源码原因是需要有去重过滤,增量爬取两个功能,而scrapy-redis项目已经帮我们实现了,想看看他是怎么实现的.这里只贴出部分主要代码,查看时请打开源码对照,笔记有点长 ...
- day15—jQuery UI之widgets插件
转行学开发,代码100天——2018-03-31 今天学习了jQuery UI的widgets插件,主要包括accordion插件 accordion插件 该插件表示折叠面板效果,点击头部展开/折叠被 ...