Coder Social home page Coder Social logo

jukanntenn / django-blog-tutorial Goto Github PK

View Code? Open in Web Editor NEW
2.4K 2.4K 882.0 197 KB

基于 Python3.5 和 Django 1.10 的 Django Blog 项目。

Home Page: https://www.zmrenwu.com/courses/django-blog-tutorial/

Python 37.97% CSS 49.56% HTML 10.06% JavaScript 2.40%

django-blog-tutorial's People

Contributors

huangchong94 avatar williamgwj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

django-blog-tutorial's Issues

foreignKey默认值问题

我使用ForeignKey时候,系统提示我要选择一个默认值,如下所示:
You are trying to add a non-nullable field 'category' to myblog without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:

  1. Provide a one-off default now (will be set on all existing rows with a null value for this column)
  2. Quit, and let me add a default in models.py

如果我选择1,设置成0,系统说没有这个值,我该怎么处理?

页面跳转,公共的内容如何显示,比如右侧的标签?从blog列表跳转到blog详情页面,如果同样想显示右侧的标签页面,除了重新计算并添加上下文tag_list,还有其它方式吗?

页面跳转,公共的内容如何显示,比如右侧的标签?从blog列表跳转到blog详情页面,如果同样想显示右侧的标签页面,除了重新计算并添加上下文tag_list,还有其它方式吗?

IndexView 使用blog/index.html 显示文章列表,右侧显示标签。

                <div class="list-group">
                    {% for tag in tag_list %}
                        <a href="{% url 'blog:tag' tag.pk %}" class="list-group-item"><span
                                class="badge"></span>{{ tag.name }}</a>
                    {% endfor %}
                </div>

kwargs['tag_list'] = Tag.objects.all().order_by('name')

点击任何一个blog,进入blog详情页面blog/detail.html,如果我要显示同样的标签,归档应该如何做?
只能添加同样的内容到上下文kwargs['tag_list']中嘛?

class ArticleDetailView(DetailView):
def get_context_data(self, **kwargs):
        kwargs['comment_list'] = self.object.blogcomment_set.all()
        kwargs['form'] = BlogCommentForm()
        **kwargs['tag_list'] = Tag.objects.all().order_by('name')**
        return super(ArticleDetailView, self).get_context_data(**kwargs)

如何理解改变article.body,会影响到返回的article_list?

如何理解改变article.body,会影响到返回的article_list?

 def get_queryset(self):
        """
        过滤数据,获取所有已发布文章,并且将内容转成markdown形式
        """
        article_list = Article.objects.filter(status='p')
        # 获取数据库中的所有已发布的文章,即filter(过滤)状态为'p'(已发布)的文章。
        for article in article_list:
            article.body = markdown2.markdown(article.body, )
            # 将markdown标记的文本转为html文本
        return article_list

如何给摘要设置默认值

 关于模型中的 summary 我想在文章写好后,让摘要默认为文章的前54个字符。该如何实现。?
 我自己 Google 后,感觉 getattr( ) 函数可以用在这。但又没思路。

views.IndexView.as_view()

blog_object/urls.py中

urlpatterns = [

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

url(r'^blog/', views.IndexView.as_view()),

]

views.IndexView.as_view()传递了哪些参数?看不大明白,哪位高手能解释下?

Blog数据库设计

此为我分析有道云笔记官方Blog需要展示的数据设计的最基本的数据库结构,并非完善的,比如没有评论,没有User等。我的想法是从简单的开始,做好基本功能,学习相关知识后再逐步迭代拓展。大家有什么意见请在下面评论,评论支持markdown语法。

关系型数据库(我们使用的是MySQL)的基本结构是一张一张的表,每张表代表某个事物,每张有很列,代表这个事物的属性。关于关系型数据库的详细介绍参考百度百科

这里我们设计的是Blog数据库,基本的有两张表,一张用于存储文章,一张存储文章的分类信息,如下图所示:
image

这是数据库的底层结构,django对数据库的底层结构进行了封装,设计起来更加简单,以下是django的对数据库结构的代码表现形式,我会逐行解释,如果对django的model不太熟悉的也可以参考以下官方文档:django模型层概论

from django.db import models

class Article(models.Model):
    """
    定义用于储存blog文章的表,必须继承自models.Model
    """
    STATUS_CHOICES = (
        ('d', 'Draft'),
        ('p', 'Published'),
    )

    title = models.CharField('标题',max_length=70)
    ## 文章标题,每一个Field对应数据库的一列,即某个属性。CharField是存储字符        串的。max_length表示最多存储70个字符。

    body = models.TextField(‘正文’)
    ## 文章正文,TextField用于存储文本字符串

    created_time = models.DateTimeField(‘创建时间’,auto_now_add=True)
    ## 文章创建时间,DateTimeField用于存储时间,设定auto_now_add参数为真,则在        文章被创建时会自动添加创建时间

    last_modified_time = models.DateTimeField(‘修改时间’,auto_now=True)
    ## 文章最后一次编辑时间,auto_now=True表示每次修改文章时自动设定修改的时间

    status = models.CharField(‘状态’,max_length=1,choices=STATUS_CHOICES)
    ## 文章状态,choices选项会使该field在被渲染成form时被渲染为一个select组件        ,这里我定义了两个状态,一个是Draft(草稿),一个是Published(已发布)

    abstract = models.CharField(‘摘要’,max_length=54)
    ## 文章摘要

    views = moedels.PositiveIntegerField(‘浏览量’,default=0)
    ## 阅览量,PositiveIntegerField存储非负整数

    likes = moedels.PositiveIntegerFieldd(‘点赞数’,default=0)
    ## 点赞数

    category = models.ForeignKey('Category',null=True,on_delete=models.SET_NULL)
    ## 文章的分类,ForeignKey即数据库中的外键。外键的定义是:如果数据库中某个        表的列的值是另外一个表的主键。外键定义了一个一对多的关系,这里即一篇文        章对应一个分类,而一个分类下可能有多篇文章。详情参考django官方文档关于ForeinKey的说明:[foreinkey](https://docs.djangoproject.com/en/1.9/topics/db/models/#many-to-one-relationships),on_delete=models.SET_NULL表示删除某个category后其下所有的Article的外键设为null

    def __str__(self):
        return self.title


class Category(models.Model):
    """
    分类对应的表,注意它和Article是一对多的关系
    """
    name = models.CharField(max_length=20)
    created_time = models.DateTimeField(auto_now_add=True)
    last_modified_time = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

迁移脚本问题

我运行脚本,执行会出错,脚本内容如下:

find ./ -name 'migrations' | xargs rm -r -f
find ./ -name 'pycache' | xargs rm -r -f
find ./ -name '*.pyc' | xargs rm -f
rm -f db.sqlite3
python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py createsuperuser

如果直接运行数据库迁移和创建admin账户,是没有问题的。

python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py createsuperuser

是不是手动改了迁移脚本?
我觉得在开发阶段,没有数据的时候,没有必要依赖迁移脚本。
应该保证使用迁移命令,随时可以配置环境,所有migrations文件都不会被提交

关于templatetag问题

我是把作者的templatetag的文件夹直接拷贝到自己的项目下,但是在html中{% load paginate_tags %}是没有提示而且网页报错django.template.exceptions.TemplateSyntaxError: 'paginate_tags' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_static
admin_urls
cache
...

workspace.xml是干什么用的?是自动生成的吗?当点击一个add按钮增加一篇文章的时候,是怎么处理这个路径的哦请求的?

1、workspace.xml是干什么用的?是自动生成的吗?
2、再有就是http://localhost:8000/admin/blog/article/add/
这种增加一篇文章的这个请求对应的处理文件是啥?也就是这个请求发出的时候是怎么处理的,我并没有看见有对http://localhost:8000/admin/blog/article/add/
这个的处理,在urls.py中没有这个关键字"add",还有就是点击change的时候,是怎么处理这么请求的?点击change的url是:http://localhost:8000/admin/blog/article/

只安裝python 和django,不用安裝apache也能架設web server?

很久之前, 在一個網站學習用python和WSGI 在apache架設web server.
當時我要在http.conf掛載python的module/path之類才能開通.

但最近跟了www.shiyanlou.com 的django教學. 但整個過程根本不用裝apache.

但我在網上也見倒有人用apache+django去架站.
請問那個是較好的做法? 謝謝.
我一直是用開php和apache的. 對python和django不算太熟.

blog_project/urls.py 中这样改是好还是不好呢

第一种方式:
url(r'', include('blog.urls', namespace='blog', app_name='blog')),
第二种方式:
url(r'^blog/', include('blog.urls', namespace='blog', app_name='blog')),

请问上面哪种方式更好呢?

Blog首页视图设计

根据设计好的数据模型,现在我们来设计视图。
在Django中,网页的页面和其他内容都是由视图来交付(视图对WEB请求进行回应)。每个视图都是由一个简单的Python函数表示的(对于基于类的视图,一个视图是用一个方法来表示的)。 Django通过检查请求的URL(准确地说,是URL里域名之后的那部分)来选择使用哪个视图。

简单的视图可以由一个函数来完成,django对一些常用方法进行了封装,使用基于类的视图,可以更快完成任务。

from blog.models import Article
from blog.models import Category
from django.views.generic import ListView
import markdown2

class IndexView(ListView): 
"""
  首页视图,继承自ListVIew,用于展示一个列表
"""
    template_name = "blog/index.html"
    # template_name属性用于指定使用哪个模板进行渲染
    context_object_name = "article_list"
    #  context_object_name属性用于给上下文变量取名(在模板中使用该名字)
    def get_queryset(self):
    # 过滤数据,获取所有已发布文章,并且将内容转成markdown形式
        article_list = Article.objects.filter(status='p')
        for article in article_list:
            article.body = markdown2.markdown(article.body, )
        return article_list

    def get_context_data(self, **kwargs):
    # 增加额外的数据,这里返回一个文章分类,以字典的形式
        kwargs['category_list'] = Category.objects.all()
        return super(IndexView, self).get_context_data(**kwargs)

该部分涉及到了内建的基于类的通用视图,内容比较多,只有多看文档。参考:基于类的视图

社区数据库表设计

这是食肉动物给出的一个社区数据库设计,涵盖的很完整了。由于目前我们只做用户系统,因此我把和用户相关的一些字段抽离了出来。大家看一下还有没有需要补充的地方:

用户名
邮箱
密码
头像
性别
生日
个人简介
注册时间
注册时IP
最后一次登录时间
最后一次登录IP
个人网站
GitHub主页地址
昵称
所在公司或学校
职位
关注的人
关注他的人

此外还有成就系统,但是设计比较复杂,可以后期再详细设计。

一下是整个社区的完整表设计:
优化的**:
一、 索引:
我觉得建立索引还是很有必要的。理由如下:
1 建立索引可以加快检索速度,对于论坛读和写的比例相差很大,用户体验当然是读多写少,所以综合考虑还是要用索引,而且是加在常用的读关键字上。
2 索引之所以会降低更新的速度,是因为更新还包括对索引的更新, 但是,我们可能对发帖标题,发帖内容,回复标题,回复内容这4个字段做更新。需要注意的是,这四个字段并不是用来建立表连接的字段,为了优化查询速度我们不会在这四个字段上建立索引,所以我们建立的索引不会影响更新帖子的性能。只要被索引的列(例如回复表的标题ID)不被频繁更新,即使索引所在地行的其它列被频繁update,索引也不会被更新从而产生性能消耗。

二、分割:
1 数据库切分:用户库、主题库、回复库
2 数据表水平切分:用户库1-n、主题库1-n、回复库1-n (比如按时间分)
3 分布式数据库:每台计算机中都有DBMS的一份完整拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个 完整的、全局的大型数据库。
4 论坛功能可以进行分隔,不同的服务器负责不同的功能
5 用主从数据库,master是写, slave是读
6 把内容与其它信息分开,好处就是可以让每个表的文件最小化,对数据库操作压力会减小,这样保证每张表数据量很小,操作速度会快,也可以在这里使用缓存

下面是用户系统表结构:
以mysql为例,oracle也可。

-- user 用户表

CREATE TABLE user (
user_id mediumint(8) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
group_id mediumint(8) NOT NULL COMMENT '用户组ID',
user_name varchar(32) NOT NULL COMMENT '用户名',
user_pwd varchar(32) NOT NULL COMMENT '用户密码',
user_phone int(12) NOT NULL COMMENT '用户手机号码',
user_sex varchar(6) NOT NULL COMMENT '用户性别',
user_qq mediumint(9) NOT NULL COMMENT '用户QQ号码',
user_email varchar(64) NOT NULL COMMENT '用户EMAIL地址',
user_address varchar(255) NOT NULL COMMENT '用户地址',
user_mark mediumint(9) NOT NULL COMMENT '用户积分',
user_rank_id tinyint(3) NOT NULL COMMENT '用户等级',
user_last_login_ip varchar(15) NOT NULL COMMENT '用户上一次登录IP地址',
user_birthday int(13) NOT NULL COMMENT '用户生日',
user_description varchar(255) NOT NULL COMMENT '自我描述',
user_image_url varchar(255) NOT NULL COMMENT '用户头像存储路径',
user_school varchar(255) NOT NULL COMMENT '毕业学校',
user_register_time int(13) NOT NULL COMMENT '用户注册时间',
user_register_ip varchar(15) NOT NULL COMMENT '用户注册时IP地址',
user_last_update_time int(13) NOT NULL COMMENT '用户上次更新博客时间',
user_weibo varchar(255) NOT NULL COMMENT '用户微博',
user_blood_type char(3) NOT NULL COMMENT '用户血型',
user_says varchar(255) NOT NULL COMMENT '用户语录',
user_lock tinyint(3) NOT NULL COMMENT '是否锁定,0为不锁定,1为锁定',
user_freeze tinyint(3) NOT NULL COMMENT '是否冻结,0为不冻结,1为冻结',
user_power varchar(255) NOT NULL COMMENT '拥有权限',
PRIMARY KEY (user_id),
UNIQUE ind_user_name (user_name)
) ENGINE=InNodb DEFAULT CHARSET=utf8 ;


-- user_rank 用户权限表

CREATE TABLE user_rank (
rank_id mediumint(5) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
user_rank_id smallint(5) NOT NULL COMMENT '等级ID',
rank_mark mediumint(6) NOT NULL COMMENT '等级积分',
rank_name varchar(32) NOT NULL COMMENT '等级名称',
PRIMARY KEY (rank_id)
) ENGINE=InNodb DEFAULT CHARSET=utf8 ;


--user_group 用户组表

CREATE TABLE user_group (
g_id tinyint(3) NOT NULL AUTO_INCREMENT COMMENT '自增ID号',
group_id tinyint(3) NOT NULL COMMENT '用户组ID',
group_name varchar(20) NOT NULL COMMENT '用户组名',
group_power varchar(20) NOT NULL COMMENT '用户权限',
PRIMARY KEY (g_id)
) ENGINE=InNodb DEFAULT CHARSET=utf8 ;


-- power_list 功能权限表

CREATE TABLE power_list (
p_id int(10) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
power_id int(10) NOT NULL COMMENT '权限ID',
power_name varchar(36) NOT NULL COMMENT '权限描述',
PRIMARY KEY (p_id)
) ENGINE=InNodb DEFAULT CHARSET=utf8 ;


--friend 好友表

CREATE TABLE friend (
f_id smallint(5) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
user_id mediumint(8) NOT NULL COMMENT '用户ID',
friend_id mediumint(8) NOT NULL COMMENT '好友ID',
PRIMARY KEY (f_id)
) ENGINE=InNodb DEFAULT CHARSET=utf8 ;


--user_attention 用户关注表

CREATE TABLE user_attention (
a_id smallint(5) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
user_id mediumint(8) NOT NULL COMMENT '用户ID',
attention_id mediumint(8) NOT NULL COMMENT '关注ID',
PRIMARY KEY (a_id)
) ENGINE=InNodb DEFAULT CHARSET=utf8 ;


--secret_message 用户私信表

CREATE TABLE secret_message (
secret_id mediumint(8) NOT NULL AUTO_INCREMENT COMMENT '自增私信ID',
send_id mediumint(8) NOT NULL COMMENT '发信者ID',
receive_id mediumint(8) NOT NULL COMMENT '收信者ID',
message_topic varchar(64) NOT NULL COMMENT '私信标题',
message_content varchar(255) NOT NULL COMMENT '私信内容',
PRIMARY KEY (secret_id)
) ENGINE=InNodb DEFAULT CHARSET=utf8 ;


--system_message 系统通知表

CREATE TABLE system_message (
system_id mediumint(8) NOT NULL AUTO_INCREMENT COMMENT '系统通知ID',
send_id mediumint(8) NOT NULL COMMENT '接受者ID',
group_id tinyint(3) NOT NULL COMMENT '用户组ID',
send_default mediumint(8) NOT NULL COMMENT '1时发送所有用户,0时则不采用',
system_topic varchar(60) NOT NULL COMMENT '通知内容',
system_content varchar(255) NOT NULL COMMENT '通知内容',
PRIMARY KEY (system_id)
) ENGINE=InNodb DEFAULT CHARSET=utf8 ;


--friendly_link 友情链接

CREATE TABLE friendly_link (
link_id smallint(5) NOT NULL AUTO_INCREMENT COMMENT '友情链接自增ID',
link_name varchar(60) NOT NULL COMMENT '友情链接名称',
link_url varchar(255) NOT NULL COMMENT '链接地址',
link_logo varchar(255) NOT NULL COMMENT 'LOGO图片',
show_order tinyint(3) NOT NULL COMMENT '在页面显示的顺序',
PRIMARY KEY (link_id)
) ENGINE=InNodb DEFAULT CHARSET=utf8 ;


--stay_message 用户留言表

CREATE TABLE stay_message (
stay_id smallint(5) NOT NULL AUTO_INCREMENT COMMENT '留言表自增ID',
user_id mediumint(8) NOT NULL COMMENT '用户ID',
stay_user_id mediumint(8) NOT NULL COMMENT '留言者ID',
message_content varchar(255) NOT NULL COMMENT '留言内容',
stay_user_ip varchar(15) NOT NULL COMMENT '留言用户的IP地址',
message_stay_time int(13) NOT NULL COMMENT '留言时间',
place varchar(64) NOT NULL COMMENT '地区',
PRIMARY KEY (stay_id)
) ENGINE=InNodb DEFAULT CHARSET=utf8 ;


--visitor 最近访客表

CREATE TABLE visitor (
v_id mediumint(8) NOT NULL AUTO_INCREMENT COMMENT '访客记录ID',
visitor_id mediumint(8) NOT NULL COMMENT '访客ID',
visitor_time int(13) NOT NULL COMMENT '来访时间',
user_id mediumint(8) NOT NULL COMMENT '被访用户ID',
visitor_ip varchar(15) NOT NULL COMMENT '访客IP地址',
type_id int(3) NOT NULL COMMENT '访问板块ID',
where_id mediumint(8) NOT NULL COMMENT '查看某板块的某个子项目,如查看相册板块的第3个相册,该ID对应该相册的ID号',
PRIMARY KEY (v_id)
) ENGINE=InNodb DEFAULT CHARSET=utf8 ;


--shuoshuo 用户心情说说表

CREATE TABLE shuoshuo (
shuo_id mediumint(8) NOT NULL AUTO_INCREMENT COMMENT '说说记录ID',
user_id mediumint(8) NOT NULL COMMENT '用户ID',
shuo_time int(13) NOT NULL DEFAULT 0 COMMENT '发布时间',
shuo_ip varchar(15) NOT NULL COMMENT '说说发布时的IP地址',
shuoshuo varchar(255) NOT NULL COMMENT '说说内容',
type_id tinyint(3) NOT NULL DEFAULT 3 COMMENT '栏目ID,默认为3',
PRIMARY KEY (shuo_id)
) ENGINE=InNodb DEFAULT CHARSET=utf8 ;


--photo_sort 相片分类表

CREATE TABLE photo_sort (
sort_img_id mediumint(8) NOT NULL AUTO_INCREMENT COMMENT '相册ID',
sort_img_name varchar(20) NOT NULL COMMENT '相册名',
sort_img_type varchar(20) NOT NULL COMMENT '展示方式 0->仅主人可见,1->输入密码即可查看,2->仅好友能查看,3->回答问题即可查看',
img_password varchar(32) NOT NULL COMMENT '查看密码',
user_id mediumint(8) NOT NULL COMMENT '所属用户ID',
img_sort_question varchar(255) NOT NULL COMMENT '访问问题',
img_sort_answer varchar(128) NOT NULL COMMENT '访问问题的答案',
type_id int(3) NOT NULL DEFAULT 1 COMMENT '默认1表示相册板块',
top_pic_src mediumint(8) NOT NULL COMMENT '封面图片的路径',
PRIMARY KEY (sort_img_id)
) ENGINE=InNodb DEFAULT CHARSET=utf8 ;


--photos 相片表

CREATE TABLE photos (
photo_id mediumint(8) NOT NULL AUTO_INCREMENT COMMENT '相片ID',
photo_name varchar(255) NOT NULL COMMENT '相片名称',
photo_src varchar(255) NOT NULL COMMENT '图片路径',
photo_description varchar(255) NOT NULL COMMENT '图片描述',
user_id mediumint(8) NOT NULL COMMENT '所属用户ID',
sort_id mediumint(8) NOT NULL COMMENT '所属相册ID',
upload_time int(13) NOT NULL COMMENT '图片上传时间',
upload_ip varchar(15) NOT NULL COMMENT '图片操作上传IP地址',
PRIMARY KEY (photo_id)
) ENGINE=InNodb DEFAULT CHARSET=utf8 ;

在项目中用CKeditor怎么设置成简体中文?

blog后台编辑的时候,我引入一个CKeditor, 在config.js里面我已经将语言写成了简体中文language=‘zh-cn’,为什么后台编辑界面显示的是繁体?有什么办法改成简体中文?

前端库文件和 CDN

大家引入前端库的时候把相关文件,甚至整个第三方库都丢进 static 文件夹,这样有几个坏处:

  1. 一个 commit 充斥着成千上万个来自引入第三方库的改动,review 很痛苦;
  2. 每个子目录都有重复的部分,但 URL 不同了,浏览器至少要加载三次;
  3. 增加服务器压力(这个问题不大)。

因此,我建议先统一好用哪家 CDN,然后在未来的 commit 中使用它。推荐:

  1. BootCDN 由又拍云支持的,我一直在用;
  2. 360网站卫士 库有点旧,不过可以用它调用 Google 前端库服务。

新浪和百度:库少,太旧,配置还有问题导致 Bootstrap 字体加载不出。

CI 与 Demo

  1. CI 是指 Continuous integration 。当项目测试跟上之后,所有 branch 需要通过 ci 后方可 merge
  2. Demo ,需要服务器运行当前版本的 blog。

依赖项少了一个

我照着这个项目的说明文档安装配置了这个项目,然后在本地运行的时候报了个错,错误信息提示少装了个pytz,requirement.txt里面并没有这个。。。手动装了这个之后就可以了。

project 的url和application的url问题

project:
url(r'^blog/', include('blog.urls')),
application:
url(r'^$', views.IndexView.as_view(), name='blog')

project
url(r'', include('blog.urls', namespace='blog', app_name='blog'))
application:
url(r'^blog/$', views.IndexView.as_view(), name='index')

What's the different?

建议修改分支至tag

使用tag来区分不同版本岂不是更好?
而且分支名这么长....还有特殊字符...
使用tag的话更容易处理版本等.

feature分支

你们feature会报错吗,为什么我的老是报错
Reverse for 'monthly_archives' with arguments '()' and keyword arguments '{'year': 2016, 'month': '06'}' not found. 0 pattern(s) tried: []

linux 运行Performing system checks... Killed

在windows 系统下可以运行,但放在linux上面(centos7)python3 manage.py runserver,就出现Performing system checks...

Killed

运行不起来
是因为我的服务器配置太低吗,我的内存512M

求赐教

如何加入邮件列表

同时,你也可以加入我们的邮件列表 [email protected] ,随时关注我们的动态,我们会将每周的详细开发文档和代码通过邮件列表发出。

然而我好像不懂怎么加入邮件列表,求指教

关于使用models.Manager的一点疑问?

第四周里的文章归档继承Manager写了新的类ArticleManager,在类中写了新函数 archive ,我有点小疑问:

  1. archive 函数是否可以在 类Article 内部使用 @classmethod 实现,实现的效果和使用 models.Manager 有什么区别吗?
  2. 如果可以使用 @classmethod 实现同样的效果,那使用 models.Manager 的好处是?

谢谢。

建议

建议settings.py加一行
location = lambda x: os.path.join(BASE_DIR, x)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.