网站开发纪录

day1:

bbs的models基本类数据定义,数据库连接;

注意创建数据库的时候指定utf8格式,不然不能写中文,会出错;

CREATE DATABASE bbs_pro DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

问题:

class BBS_user(models.Model):
    user = models.OneToOneField(User)#ForeignKey不能反向查,OneToOne可以

中途给OneToOneField()没与User对应导致出错;

一个没对齐出错;

解决:

简单的分析日志,然后搜索解决;

---------------------------------------------------------------------------------------------------------

day2:


1、使用django评论插件的时候重新manage.py syncdb后出错

CommandError: One or more models did not validate:
comments.comment: 'site' has a relation with model <class 'django.contrib.sites.models.Site'>, which has either not been installed or is abstract.

    'django.contrib.comments',#导入评论插件
    'django.contrib.sites',
)
SITE_ID=1

添加sites,并设置站点ID为1即可。

2、添加用户时出现错误,原来之前BBS_user的__unicode__有问题,返回self.user.username即可,用户那儿就显示用户名,返回其他的也可以,只返回self.user是返回对象,会出错。

3、定制admin,在admin里添加过滤器和搜索框


--------------------------------------------------------------------------------------------------

day3:

1、在Bootstrap里挑了一个模板,将html源代码和一些css和js下载到本地,对其进行修改以显示自己的bbs列表。

2、遇到的列表显示问题通过搜索和参考前端代码解决了。

3、文章内容格式很乱,没有空格和回车。

4、添加评论插件,出现问题;然后自己编写评论模块,发生权限问题,必须先登录才能发表评论。


--------------------------------------------------------------------------------------------------

day4:

1、做登录模块,写了login.html,当发回给views.acc_login处理登录请求的时候出现“CSRF verification failed. Request aborted.”错误,是一个django对跨站伪造请求漏洞的保护,日志提供四种可能情况,都尝试过,还没解决。暂时先注释掉'django.middleware.csrf.CsrfViewMiddleware',保护机制。

2、def sub_comment(request):用于实现提交评论

    comments.models.Comment.objects.create(
                                   content_type_id = 7,
                                   object_pk = bbs_id,#给哪个帖子写评论
                                   site_id = 1,
                                   user_id = request.user.id,
                                   comment = comment,
                                   )

注意查看id不一定和这个一样,都是动态的,随项数的不一样会变。

3、文章内容是乱的,因为数据直接放到数据库变成了utf8格式,实现其html格式存放,网上可以下载html编辑器,可以用tinymce编辑器

4、添加版块,出错。

"Unknown column 'app01_bbs.category_id' in 'field list'"

主要是之前在bbs里漏掉了一个版块属性,现在添加的话直接用syncdb更新是不行的,django1.6可以用south解决,django1.7以上migrate可以直接更新,由于用的1.6,实在太麻烦了,我就直接删了数据库重建了(蛋疼)。

--------------------------------------------------------------------------------------------------

day5:

1、展示bbs列表,刷新后有错,原来第一次写成models.Category.objects了,应该是从所有的bbs帖子里过滤出该版块的帖子。

def category(request,cata_id):
    bbs_list = models.bbs.objects.filter(category__id=cata_id)
2、版块分类里全部显示Category object,需要将其显示为自己的名字。

在category的类定义下补充

    def __unicode__(self):
        return self.name
即可显示为版块名字。


3、实现当点击版块的时候这个版块的板块名active。

当在html里用{%ifequal category.id  cata_id%}判断的时候,所有版块都没有active,用django debug tools调试工具调试后发现category.id是整形的,但是cata_id返回的是unicode字符,所以永远不会相等。对cata_id进行强制转换后再比较即可int(cata_id)。


--------------------------------------------------------------------------------------------------

day6:

1、修改前端,最终效果如下:


2、部署到sae上时出现多种问题,django sae上最高支持1.5,当自己上传了django1.6包时又出现冲突,


3、搜索解决方法,看到http://shanyuze.com/blog/6/  这篇文章,发现自己上传django包要依赖其他的包,这样找所有包太艰难而且很容易出错,工作量太大还不一定调试好,还不如自己搭建服务器或者在sae里直接重新新建项目复制代码来得快。

  • 之后将于manage.py同级的文件,及代码全部拷贝到1文件内,由于SAE最高只支持 Django1.5,而我们使用的是Django1.6,这里要在1文件内新建名叫site-packages的文件夹,将Django1.6代码包拷进来,注意,Django所使用的第三方依赖包也要拷进来,比如说markdown、linaro_django_pagination等,因为SAE不一定提供,可以查看SAE预装模块列表,看看我们所使用的第三方包是否在里面,在里面的话就不需要拷进来了,比如说:PIL等(这里有个血的教训,我在site-packages拷进了我本地使用的PIL包,线上后,发现图片处理那块总是报500错误,后来发现本地包是32位的与我本地使用的32位python2.6.7相容,但是线上SAE使用的是64位python,所以不兼容出现问题,解决就是删除site-packages中的PIL包默认使用SAE提供的就行。)


DONE!

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页