项目简介
运行平台:windows
Python版本:3.4
Django版本:2.0
数据库工具:sqlite
开发工具:Pycharm+sublime-text
写在开头:这是我第一次使用Django进行web开发,在此之前并无任何web开发经验。其中,Django以及html/css都属于边学边用阶段,因此项目中可能出现一些粗糙的地方,读者可以自行规避。虽然本项目名为信息资源型系统,但是其实也就是开发了一个博客,希望能带给你们一些帮助~
本项目中的一切网页都是静态网页,另外还有诸多不足的地方,不过作为一个入手项目,暂不会继续修改更新,有兴趣者可以自行完善。
目前本项目发布在阿里云平台,地址:http://47.106.39.91/
项目下载地址:
建议
- 配合Django官方文档教程以及其他博主学习博客进行学习
- 跟着教程自己完成一次Django开发
- 具有一定python语言基础
- 下载SQLITEStudio
实战开始
我们首先给我们的项目起个名字:EasyDown。
(1)利用命令行创建项目。
django-admin startproject EasyDown
(2)创建APP
由于我们准备搭建的是一个博客系统,所以就给这个APP起名为:blog
在命令行下继续输入
python manage.py startapp blog
此时本项目的文件树列表如下所示:
在blog子目录下新建一个py文档:urls.py
(3)注册app并配置静态文件目录
打开setting.py文件,添加如下信息
# 配置静态文件目录
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
(4)创建目录
在blog目录下创建两个子目录
- templates
- static
其中templates用于存放模板(即html文件)
static文件夹下存放静态文件
接着我们在static文件夹下继续添加几个文件夹
然后我们在css文件夹下添加一个文件夹:images
(5)创建模型 - 每一个Django 模型都继承自django.db.models.Model
- 在模型当中每一个属性都对应一个数据库表的字段
(本项目使用默认数据库SQLITE,不需要配置数据库)
由于本项目希望用户注册登陆后查看博客内容,因此我们需要一个登陆系统,那么我们便从这里开始入手。
用户具有如下信息:
- 用户名(用于登陆)
- 密码
- 昵称
- 邮箱
- 创建时间
- 评论数
- 头像
打开blog目录下的models.py文件,添加如下内容
from django.db import models
from django.utils.timezone import now
class User(models.Model):
username = models.CharField(max_length = 50)
password = models.CharField(max_length = 200)
nickname = models.CharField(max_length = 50,default='匿名')
email = models.EmailField()
created_time = models.CharField(max_length=50,default=now)
comment_num = models.PositiveIntegerField(verbose_name='评论数', default=0)
avatar = models.ImageField(upload_to = 'media', default="media/default.png")
def __str__(self):
return self.username
(ps:当初在开发该项目时头像这条信息是后续加入的)
由于我们头像默认地址为media/default.png,所以需要放一张default.png图片在该文件夹下。
(6)注册模型并同步数据库
接下来打开blog下的admin.py文件
from django.contrib import admin
from .models import User
admin.site.register(User)
接着打开命令行进入manage.py同级目录
依次输入以下指令
python manage.py makemigrations
python manage.py migrate
创建成功后,会生成一个SQL文件
用SQLITEStudio打开这个文件,进入blog_user表
这里可以看到我们已经成功同步数据库
(7)注册界面的开发
(本博不讲解html元素布局以及css等内容)
首先我们在templates文件夹下新建一个文件:register.html
接着我们在static/css文件夹下新建一个文件:log.css。
然后我们在static/css文件夹下添加一个文件:semantic.css(这是个前端框架,去官网下载后复制过来)
其中log.css文件内容如下(某些内容用不到):
.back{background:#181015 url("images/back.jpg") no-repeat; background-size: cover;}
.login{background:#181015 url("images/log_in.jpg") no-repeat; background-size: cover;}
.register{background:#181015 url("images/regis.jpg") no-repeat; background-size: cover;}
.forget{background:#181015 url("images/for_get.jpg") no-repeat; background-size: cover;}
.bg{padding-top:100px;background:#181015 url("images/background.jpg") no-repeat; background-size: cover;}
.reset{background:#181015 url("images/reset.jpg") no-repeat; background-size: cover;}
.comment{background:#181015 url("images/comm.png") no-repeat; background-size: cover;}
.contact{background:#181015 url("images/contact.png") no-repeat; background-size: cover;}
.footer2 { background: #191919; padding: 15px 0; color: #777; font-size: 12px; }
.footer2 a { color: #aaa; }
.footer2 a:hover { color: #fff; }
.footer2 p { margin: 0; }
.widget-simplenav { margin-left:-5px; }
.widget-simplenav a{ margin:0 5px; }
我们需要在css/images文件夹下放一张图片命名为:regis.jpg
这便是我们注册页面的背景图
register.html文件内容如下:
{%load static%}
<!DOCTYPE html>
<html lang="zh-hans">
<head>
<meta charset="UTF-8">
<title>注册</title>
<link rel="stylesheet" href="{%static 'css/log.css' %}">
<link rel="stylesheet" href="{%static 'css/semantic.css' %}">
</head>
<body class="register">
<div class="ui center aligned grid" style="margin-top: 200px">
<div class="ui six wide column">
<h1 class="ui teal header"><font color="black">EasyDown-用户注册</font></h1>
<div class="ui segment">
<div class="ui content">
<form class="ui form" method="post" action="http://127.0.0.1:8000/register/" enctype="multipart/form-data">
<div class="field">
<input type="text" name="username" placeholder="请输入用户名"><br>
</div>
<div class="field">
<input type="password" name="password_1" placeholder="请输入密码"><br>
</div>
<div class="field">
<input type="password" name="password_2" placeholder="请确认密码"><br>
</div>
<div class="field">
<input type="text" name="nickname" placeholder="请输入昵称"><br>
</div>
<div class="field">
<input type="text" name="email" placeholder="请输入邮箱"><br>
</div>
<div>头像<input type="file" name="avatar"></div>
{{ error }}<br>
<button class="ui fluid large teal button" type="submit">注册</button>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
第一句话{%load static%}代表引入静态文件(css,js等)
img,css,js等文件的引用与下述语句类似:
<link rel="stylesheet" href="{%static 'css/log.css' %}">
打开blog下的views.py文件,添加以下内容
from django.shortcuts import render
def register(requests):
return render(requests,'register.html')
接着我们打开EasyDown目录下的urls.py文件,为我们的注册页面添加路由信息
from django.contrib import admin
from django.urls import path
from blog import views
urlpatterns = [
path('admin/', admin.site.urls),
path('register/',views.register,name = 'register'),
]
命令行进入manage.py同级目录输入指令
python manage.py runserver
由于我们注册页面的相对路径为register/,所以我们在浏览器中进入http://127.0.0.1:8000/register/
可以看到注册界面
当然此时的注册信息是写入不到数据库的,毕竟我们的后台目前只有一句话,也就是展示该页面。