问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于django怎么完成贴吧回复功能的信息

发布网友 发布时间:2024-09-27 00:48

我来回答

1个回答

热心网友 时间:2024-10-04 05:26

本篇文章给大家谈谈django怎么完成贴吧回复功能,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:1、如何用django开发一个简易个人Blog-Python2、Django和Flask这两个框架在设计上各方面有什么优缺点3、用python+django写一个简单的留言板(可留言,可回复)哪位大侠有完整的代码(包括页面的数据库)4、Django中怎么使用django-celery完成异步任务如何用django开发一个简易个人Blog-Python

设计并实现一个基于Python的个人博客系统,需要完成如下功能

完成个人博客系统的设计和开发

用户可以通过个人博客系统,发布最新的日志

运用所学专业理论及实践,分析解决遇到的问题以提高自己的动手、思考及解决问题的能力

主要模块如下

文章管理模块:主要功能是管理员系统管理员登入后,浏览查看文章,删除不好的文章等功能

标签管理模块:主要功能是管理员系统管理员登入后,浏览查看相册,删除相册等功能

文章、标签浏览模块:主要功能是游客进入系统后。可以浏览文章列表,可以按标签查看文章

评论系统模块,游客可以发表查看别人的评论

安装与使用

项目采用Django框架进行开发,Django是一个用于快速web开发的优异方案(几乎没有之一),获取源码后可以按照如下方式来运行代码

新建mysql数据库,将数据库sql文件导入

修改源码包中的csworkblog/settings.py文件,将DATABASES这个变量里的内容改一下,这个就是你本地的数据库url和用户名密码,其中NAME为你的database名称

进入源码包,打开cmd,运行命令pythonmanager.pyrunserver就能启动服务,端口为8000

为后台管理界面,管理员用户名密码为admin123456,可以进行文章管理标签管理评论管理

界面还是比较好看的,项目截图源码下载地址???cs-work.com/p/21031?

Django和Flask这两个框架在设计上各方面有什么优缺点

(1)Flask

Flask确实很“轻”,不愧是MicroFramework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过

Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库

入门简单,即便没有多少web开发经验,也能很快做出网站

非常适用于小型网站

非常适用于开发web服务的API

开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验

各方面性能均等于或优于Django

Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方库

Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不一

Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django

Flask比Django更加Pythonic,与Python的philosophy更加吻合

(2)Django

Django太重了,除了web框架,自带ORM和模板引擎,灵活和自由度不够高

Django能开发小应用,但总会有“杀鸡焉用牛刀”的感觉

Django的自带ORM非常优秀,综合评价略高于SQLAlchemy

Django自带的模板引擎简单好用,但其强大程度和综合评价略低于Jinja

Django自带ORM也使Django与关系型数据库耦合度过高,如果想使用MongoDB等NoSQL数据,需要选取合适的第三方库,且总感觉Django+SQL才是天生一对的搭配,Django+NoSQL砍掉了Django的半壁江山

Django目前支持Jinja等非官方模板引擎

Django自带的数据库管理app好评如潮

Django非常适合企业级网站的开发:快速、靠谱、稳定

Django成熟、稳定、完善,但相比于Flask,Django的整体生态相对封闭

Django是Pythonweb框架的先驱,用户多,第三方库最丰富,最好的Python库,如果不能直接用到Django中,也一定能找到与之对应的移植

Django上手也比较容易,开发文档详细、完善,相关资料丰富

用python+django写一个简单的留言板(可留言,可回复)哪位大侠有完整的代码(包括页面的数据库)

Django时下真是名声在外了,连我这个几乎不怎么开发Web,没有使用过任何WWWFramework的小人物都对这种中间件相当的向往。limodou的学习记录是我比较喜欢去的一个地方。可惜limodou写那个记录的Django版本比较老,我常常发现不能找到自己需要import的包在哪里。所以如果想跟随当前,还是去人家Django官方的文档看看。

说起来,Django就是对Web开发中最常见而且比较烦琐的一些环节进行了包装。比如:数据库的对象操作,HTTP协议的处理,网页的模板化处理等。而Django对一些常见的操作也进行了包装,比如增加、修改、列出一组数据集合。并且提供了强大的网站管理工具。按照文档上面的入门例子,用户需要编写的代码实在是非常的少。

一个Django工程的建立和运行都需要执行它的一个管理脚本:

开启一个工程,并建立相关的目录和必须的文件:

django-admin.pystartprojectmyproject

初始化数据库

django-admin.pyinit

等等,可以参看没有任何参数时候脚本报告的帮助清单。

开启一个工程之后就要开始建立数据库的结构了。可能在你还没有对你的这个程序有一个完全的认识之前就要建立数据库的确是非常让人难受的事情。还好我们还有可以重新建立数据结构的机会。数据对象在这里叫做meta。放在你工程的/apps/程序/models/目录下面。

比如下面的一段代码:

#-*-coding:utf-8-*-

fromdjango.coreimportmeta

classAdmin(meta.Model):

"管理员账号"

name=meta.CharField(maxlength=64)

password=meta.CharField(maxlength=16)

def__repr__(self):

returnself.name

classMETA:

admin=meta.Admin(

fields=(

('用户名',{'fields':('name',)}),

('身份确认',{'fields':('password',)}),

),

)

上面建立了一个数据对象描述了一个管理员所需要保存的资料。__repr__函数用于在显示这个对象的时候有一种比较直接明了的显示。而内部类META,则用于Django内部的管理界面。

写好了所有的数据描述。执行

django-admin.pyinstallguestbook

在你配置的数据库中就可以发现你描述的数据已经变成了具体的表,存在了数据库中了。

-------

下面给出留言簿具体的数据部分:guestbook.py

#-*-coding:utf-8-*-

fromdjango.coreimportmeta

classAdmin(meta.Model):

"管理员账号"

name=meta.CharField(maxlength=64)

password=meta.CharField(maxlength=16)

def__repr__(self):

returnself.name

classMETA:

admin=meta.Admin(

fields=(

('用户名',{'fields':('name',)}),

('身份确认',{'fields':('password',)}),

),

)

classMessage(meta.Model):

"一个留言记录的数据库记录"

subject=meta.CharField(maxlength=256)

name=meta.CharField(maxlength=64)

email=meta.EmailField(blank=True)

pub_date=meta.DateTimeField('datepublished')

content=meta.TextField(maxlength=4096)

from_addr=meta.IPAddressField()

reply=meta.TextField(maxlength=4096,blank=True)

defis_replied(self):

returnnot(len(self.reply)==0)

is_replied.short_description='已经回复?'

subject.short_description='主题'

def__repr__(self):

returnself.name+"said:"+self.subject

classMETA:

admin=meta.Admin(

fields=(

(None,{'fields':('subject','name','pub_date')}),

('内容',{'fields':('content','email','from_addr'),'classes':'collapse'}),

('回复',{'fields':('reply',),'classes':'collapse'}),

),

list_display=('subject','pub_date','is_replied'),

list_filter=['pub_date'],

search_fields=['subject','content'],

)

Django中怎么使用django-celery完成异步任务

许多Django应用需要执行异步任务,以便不耽误httprequest的执行.我们也可以选择许多方法来完成异步任务,使用Celery是一个比较好的选择,因为Celery

有着大量的社区支持,能够完美的扩展,和Django结合的也很好.Celery不仅能在Django中使用,还能在其他地方被大量的使用.因此一旦学会使用Celery,我

们可以很方便的在其他项目中使用它.

1.Celery版本

本篇博文主要针对Celery3.0.x.早期版本的Celery可能有细微的差别.

2.Celery介绍

Celery的主要用处是执行异步任务,可以选择延期或定时执行功能.为什么需要执行异步任务呢?

第一,假设用户正发起一个request,并等待request完成后返回.在这一request后面的view功能中,我们可能需要执行一段花费很长时间的程序任务,这一时间

可能远远大于用户能忍受的范围.当这一任务并不需要立刻执行时,我们便可以使用Celery在后台执行,而不影响用户浏览网页.当有任务需要访问远程服务器完

成时,我们往往都无法确定需要花费的时间.

第二则是定期执行某些任务.比如每小时需要检查一下天气预报,然后将数据储存到数据库中.我们可以编写这一任务,然后让Celery每小时执行一次.这样我们

的web应用便能获取最新的天气预报信息.

我们这里所讲的任务task,就是一个Python功能(function).定期执行一个任务可以被认为是延时执行该功能.我们可以使用Celery延迟5分钟调用function

task1,并传入参数(1,2,3).或者我们也可以每天午夜运行该function.

我们偏向于将Celery放入项目中,便于task访问统一数据库和Django设置.

当task准备运行时,Celery会将其放入列队queue中.queue中储存着可以运行的task的list.我们可以使用多个queue,但为了简单,这里我们只使用一个.

将任务task放入queue就像加入todolist一样.为了使task运行,我们还需要在其他线程中运行的苦工worker.worker实时观察着代运行的task,并逐一运行这

些task.你可以使用多个worker,通常他们位于不同服务器上.同样为了简单起见,我们这只是用一个worker.

我们稍后会讨论queue,worker和另外一个十分重要的进程,接下来我们来动动手:

3.安装Celery

我们可以使用pip在vietualenv中安装:

pipinstalldjango-celery

4.Django设置

我们暂时使用djangorunserver来启动celery.而Celery代理人(broker),我们使用Djangodatabasebrokerimplementation.现在我们只需要知道Celery

需要broker,使用django自身便可以充当broker.(但在部署时,我们最好使用更稳定和高效的broker,例如Redis.)

在settings.py中:

importdjcelery

djcelery.setup_loader()

BROKER_URL='django://'

...

INSTALLED_APPS=(

...

'djcelery',

'kombu.transport.django',

...

)

第一二项是必须的,第三项则告诉Celery使用Django项目作为broker.

在INSTALLED_APPS中添加的djcelery是必须的.kombu.transport.django则是基于Django的broker

最后创建Celery所需的数据表,如果使用South作为数据迁移工具,则运行:

pythonmanage.pymigrate

否则运行:(Django1.6或Django1.7都可以)

pythonmanage.pysyncdb

5.创建一个task

正如前面所说的,一个task就是一个Pyhtonfunction.但Celery需要知道这一function是task,因此我们可以使用celery自带的装饰器decorator:@task.在

djangoapp目录中创建taske.py:

fromceleryimporttask

@task()

defadd(x,y):

returnx+y

当settings.py中的djcelery.setup_loader()运行时,Celery便会查看所有INSTALLED_APPS中app目录中的tasks.py文件,找到标记为task的function,并

将它们注册为celerytask.

将function标注为task并不会妨碍他们的正常执行.你还是可以像平时那样调用它:z=add(1,2).

6.执行task

让我们以一个简单的例子作为开始.例如我们希望在用户发出request后异步执行该task,马上返回response,从而不阻塞该request,使用户有一个流畅的访问

过程.那么,我们可以使用.delay,例如在在views.py的一个view中:

frommyapp.tasksimportadd

...

add.delay(2,2)

...

Celery会将task加入到queue中,并马上返回.而在一旁待命的worker看到该task后,便会按照设定执行它,并将他从queue中移除.而worker则会执行以下代

码:

importmyapp.tasks.add

myapp.tasks.add(2,2)

7.关于import

这里需要注意的是,在impprttask时,需要保持一致.因为在执行djcelery.setup_loader()时,task是以INSTALLED_APPS中的app名,

加.tasks.function_name注册的,如果我们由于pythonpath不同而使用不同的引用方式时(例如在tasks.py中使用frommyproject.myapp.tasksimport

add形式),Celery将无法得知这是同一task,因此可能会引起奇怪的bug.

8.测试

a.启动worker

正如之前说到的,我们需要worker来执行task.以下是在开发环境中的如何启动worker:

首先启动terminal,如同开发django项目一样,激活virtualenv,切换到django项目目录.然后启动django自带web服务器:pythonmanage.pyrunserver.

然后启动worker:

pythonmanage.pyceleryworker--loglevel=info

此时,worker将会在该terminal中运行,并显示输出结果.

b.启动task

打开新的terminal,激活virtualenv,并切换到django项目目录:

$pythonmanage.pyshell

frommyapp.tasksimportadd

add.delay(2,2)

此时,你可以在worker窗口中看到worker执行该task:

[2014-10-0708:47:08,076:INFO/MainProcess]Gottaskfrombroker:myapp.tasks.add[e080e047-b2a2-43a7-af74-d7d9d98b02fc]

[2014-10-0708:47:08,299:INFO/MainProcess]Taskmyapp.tasks.add[e080e047-b2a2-43a7-af74-d7d9d98b02fc]succeededin0.183349132538s:4

9.另一个例子

下面我们来看一个更为真实的例子,在views.py和tasks.py中:

#views.py

frommyapp.tasksimportdo_something_with_form_data

defview(request):

form=SomeForm(request.POST)

ifform.is_valid():

data=form.cleaned_data

#Scheduleatasktoprocessthedatalater

do_something_with_form_data.delay(data)

returnrender_to_response(...)

#tasks.py

@task

defdo_something_with_form_data(data):

call_slow_web_service(data['user'],data['text'],...)

10.调试

由于Celery的运行需要启动多个部件,我们可能会漏掉一两个.所以我们建议:

使用最简单的设置

使用pythondebug和logging功能显示当前的进程

11.Eager模式

如果在settings.py设置:

CELERY_ALWAYS_EAGER=True

那么Celery便以eager模式运行,则task便不需要加delay运行:

#若启用eager模式,则以下两行代码相同

add.delay(2,2)

add(2,2)

12.查看queue

因为我们使用了django作为broker,queue储存在django的数据库中.这就意味着我们可以通过djangoadmin查看该queue:

#admin.py

fromdjango.contribimportadmin

fromkombu.transport.djangoimportmodelsaskombu_models

admin.site.register(kombu_models.Message)

13.检查结果

每次运行异步task后,Celery都会返回AsyncResult对象作为结果.你可以将其保存,然后在将来查看该task是否运行成功和返回结果:

#views.py

result=add.delay(2,2)

...

ifresult.ready():

print"Taskhasrun"

ifresult.successful():

print"Resultwas:%s"%result.result

else:

ifisinstance(result.result,Exception):

print"Taskfailedduetoraisinganexception"

raiseresult.result

e

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 ipconfig/flushdns命令是做什么的啊? 我今天更新显卡驱动出问题了 这个是什么意思额!还有驱动人生说我显卡无... IPPIPP定义(二) IPPIPP的经济学解释 电脑没有显卡驱动是怎么一回事呢? 电脑为什么没显卡驱动啊。 没有驱动显卡能用吗? 西湖旅行有着怎样的绝美风光? 做梦梦见自己生儿子是什么征兆 浙江上虞特产:越瓷 福州水电厅单位宿舍小区周边配套怎么样? 怎么改善泰迪髌骨脱位 上海国产空压机保养配件 ...机,现在P2比P1还要大,P2为7.7bar,P1为7.6bar,请问是什么原因?_百度... 玄凤鹦鹉和猫能不能一起养 上海寿力空压机保养配件专业服务 Win7安装office2010时出现"不能更新受保护的Windows文件"如何解决_百度... 哈弗H2上牌问题 电脑windows系统的自动更新功能如何开启(关闭) 最近3天都是吃完饭感觉喉咙至胃部不适,有异物感,还有. 哪些公司的燃气轮机质量比较好? 唐伯虎点秋香故事情节 杭州西湖旅游攻略必去景点推荐,西胡旅游景点 求英语高手帮忙翻译一下,这是我想表白的一段的文字,把我这段文字翻译... 肺结核患者能偶尔抽烟吗 急求一篇200~300字的英语概括 肺结核抽一根烟可以吗 我考的是大理州下面一个县的公务员,我想问公务员岗位面试地点是在大理州... 我的老公在大理监狱五监区服刑,请问什么时候可以去看他 ...有一位是来自大理监狱的,有谁能告诉我他的名字?谢谢! 怎么开发手机APP软件 怎样化妆可以修饰太阳穴凹陷的情况? 什么是SUS304不锈钢板? 太阳穴凹陷的原因是什么?该如何改善? 太阳穴凹陷应该如何改善?有什么方法? sus304不锈钢是什么材质,是不是304不锈。 花火(厦门)文化传播有限公司公司发展规划 在家怎么能做出好吃的火锅? 太阳穴凹陷应该怎样处理? 额头太阳穴凹下去了怎么调整?