1、項目簡介數據庫
1.1 項目博客地址架構
1.2 https://home.cnblogs.com/longisland/框架
1.2 項目完成的功能與特點工具
登錄,註冊,博客評論,發表博客,刪除博客,修改博客post
1.3 項目採用的技術棧開發工具
以Django爲框架,pycharm爲開發工具,使用MySQL爲數據庫,開發的一款博客網站。網站
1.4 項目借鑑源代碼的地址ui
https://blog.csdn.net/holysll/article/details/87911218spa
1.5 團隊成員任務分配表
許奕鈿 |
登錄,註冊 |
王福斌 |
發表博客,刪除,修改博客 |
包香龍 |
博客評論,評論分析 |
2、項目的需求分析
用戶的註冊,登錄;
博客的發表,修改和刪除;
博客發表評論,評論分析;
3、項目功能架構圖、主要功能流程圖
4、系統模塊說明
4.1 系統模塊列表
4.1.1.用戶登陸註冊模塊;
4.1.2.博客發表模塊;
4.1. 3.博客修改刪除模塊;
4.1.4.博客評論模塊
4.1.5.評論分析
4.2 各模塊詳細描述(名稱,功能,運行截圖,關鍵源代碼)
用戶登錄:
<div class="col-sm-9">
{% if form.errors %}
<div class="alert alert-danger">你的用戶名或密碼錯誤,請從新登陸</div>
{% endif %}
</div>
<!-- Form - Login -->
<form method="post" action="{% url 'login' %}" class="form-horizontal">
{% csrf_token %}
<div class="form-group">
<div class="col-sm-9">
<!-- Form field - username -->
<input type="text"
placeholder="用戶名"
class="form-control"
name="username">
</div>
</div>
<div class="form-group">
<div class="col-sm-9">
<!-- Form field - password -->
<input type="password"
placeholder="密碼"
class="form-control"
name="password">
</div>
</div>
<div class="row">
<div class="col-sm-9">
<input type="submit" class="btn btn-primary btn-block" value="登陸"/>
</div>
</div>
用戶註冊:
<form action="" method="post" class="form-horizontal">
{% csrf_token %}
<div class="form-group">
<div class="col-sm-9">
<!-- Errors - username -->
{% if form.username.errors %}
<label class="alert alert-danger">{{ form.username.errors }}</label>
{% endif %}
<!-- Form field - username -->
<input type="text"
placeholder="Username"
class="form-control"
name="username"
required
value="{{ form.username.value|default:"" }}">
</div>
</div>
<div class="form-group">
<div class="col-sm-9">
<!-- Errors - password -->
{% if form.password.errors %}
<label class="alert alert-danger">{{ form.password.errors }}</label>
{% endif %}
<!-- Form field - password -->
<input type="password"
placeholder="Password"
class="form-control"
name="password"
required
value="{{ form.password.value|default:"" }}">
</div>
</div>
<div class="form-group">
<div class="col-sm-9">
<!-- Errors - first_name -->
{% if form.first_name.errors %}
<label class="alert alert-danger">{{ form.first_name.errors }}</label>
{% endif %}
<!-- Form field - first_name -->
<input type="text"
placeholder="First Name"
class="form-control"
name="first_name"
required
value="{{ form.first_name.value|default:"" }}">
</div>
</div>
<div class="form-group">
<div class="col-sm-9">
<!-- Errors - last_name -->
{% if form.last_name.errors %}
<label class="alert alert-danger">{{ form.last_name.errors }}</label>
{% endif %}
<!-- Form field - last_name -->
<input type="text"
placeholder="Last Name"
class="form-control"
name="last_name"
required
value="{{ form.last_name.value|default:"" }}">
</div>
</div>
<div class="form-group">
<div class="col-sm-9">
<!-- Errors - email -->
{% if form.email.errors %}
<label class="alert alert-danger">{{ form.email.errors }}</label>
{% endif %}
<!-- Form field - email -->
<input type="text"
placeholder="Email"
class="form-control"
name="email"
required
value="{{ form.email.value|default:"" }}">
</div>
</div>
<div class="form-group">
<div class="col-sm-9">
<!-- Submit button -->
<button type="submit" class="btn btn-primary btn-block">註冊</NOtton>
</div>
</div>
登錄異常處理:
註冊異常處理:
博客發表:
<div class="form-group">
<div class="col-sm-9">
<!-- Errors - title -->
{% if form.title.errors %}
<label class="alert alert-danger">{{ form.title.errors }}</label>
{% endif %}
<!-- Form field - title -->
<input type="text"
placeholder="標題"
class="form-control"
name="title"
value="{{ form.title.value|default:"" }}">
</div>
</div>
<div class="form-group">
<div class="col-sm-9">
<!-- Errors - body -->
{% if form.body.errors %}
<label class="alert alert-danger">{{ form.body.errors }}</label>
{% endif %}
<!-- Form fields - body -->
<textarea placeholder="內容"
class="form-control"
name="body">{{ form.body.value|default:"" }}</textarea>
</div>
</div>
<div class="form-group">
<div class="col-sm-9">
<!-- Submit button -->
<button type="submit" class="btn btn-primary btn-block">發表</NOtton>
</div>
</div>
博客修改:
def test_update_post_by_author(self):
self.client.login(username=USERNAME_JOHN, password=PASSWORD_JOHN)
# Empty fields in form
response = self.client.post(self.url, {'title': '', 'body': ''})
self.assertFormError(response, 'form', 'title', '標題不能爲空')
self.assertFormError(response, 'form', 'body', '內容不能爲空')
# Non-empty fields in form
response = self.client.post(self.url, {'title': 'Title 3', 'body': 'Lorem ipsum'})
self.assertRedirects(response, reverse('blog:post', kwargs={'pk': self.test_post_john.id}))
博客刪除:
def test_delete_post_by_author(self):
self.client.login(username=USERNAME_JOHN, password=PASSWORD_JOHN)
response = self.client.post(self.url)
self.assertRedirects(response, reverse('blog:home'))
博客評論:
def test_create_comment_by_logged_user(self):
self.client.login(username=USERNAME_JOHN, password=PASSWORD_JOHN)
# Empty fields in form
response = self.client.post(self.url, {'body': ''})
self.assertFormError(response, 'form', 'body', '評論不能爲空.')
# Non-empty fields in form
response = self.client.post(self.url, {'body': 'Lorem ipsum'})
self.assertRedirects(response, reverse('blog:post', kwargs={'pk': self.test_post_john.id}))
評論分析:
5、項目總結
5.1 特色
1.用戶操做博客簡單;
2.持續更新:用戶能夠更新本身的博客內容;
3.開放互動:用戶能夠在博客評論區進行評論互動;
4.展現個性;
5.2 不足之處
整個網站的邏輯還不夠嚴密,關於用戶互動的功能,博客發表的內容還不夠完善,頁面設計不夠新穎。