未分类

Django2初步使用-20181217

Django2初步使用

之前跟着教程学习过Django1的使用,对于路由、分库什么的都没有做深入研究。说来惭愧,现在真的是浅尝即止。话虽如此,还是腆着脸来写一下这段时间初步尝试Django2的一些体会,见笑了。

1. Django2的路由

这点我比较喜欢,之前的Django1只能用正则表达式的方式来写,虽说正则表达式看上去不难,但是我自己觉得比较晦涩,不太喜欢这种表达方式(除非是做爬虫),Django2在这方面有了选择,可以采用 path(‘index/‘, index) 的方式,有了这种方式,至少对我来说感觉方便了很多。至于路由的选择依然是MTV模式,没有什么改变。

2. 多应用分库

这是在实际生产中必然会用到的,其实应该和Django1一样,只不过在之前的自学中自己没有去实践过,在这次的学习中实践了一下,所以就写在这里了,大致来说的步骤是:

1 用manange.py生成应用,并且在settings.py的install_app小节注册一下新建的的应用。

2 在urls.py里面引入生成的应用view类,然后配置路由(更好的做法自然应该是在应用下面配置urls,然后引入。)

3 可选步骤,一般情况下,执行完上述步骤后就可以完成多应用分库的操作,只不过这时的template目录是在站点的根目录下的,如果想每个独立的应用都有自己的template文件夹的话,需要做一是将template文件夹移到应用的根目录下,然后还需要修改站点的settings.py里面的内容,在’DIRS’:后面写上如下的内容。

1
2
3
4
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates/')]

当然还可以做的更好,就是把所有的应用统一放到一个目录下,比如apps目录,这需要继续修改settings.py关于路径的设置内容。不过这个没有实践,就不写了。

3. 编辑器Ckeditor的使用

这个编辑器做为一般建站可能都会用上吧,大致的使用步骤是:

1 安装,pip install django-ckeditor 需要上传图片的话,还需要安装pillow。

2 在settings.py里设置,需要设置的内容是:
1) 在install_app小节里面增加 ‘ckeditor_uploader’和’ckeditor’ 内容,前者用来上传图片、多媒体文件等用。

2) 增加如下的配置代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CKEDITOR_JQUERY_URL ='https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js'
CKEDITOR_IMAGE_BACKEND = 'pillow'
CKEDITOR_UPLOAD_PATH = 'uploads/'
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/

CKEDITOR_CONFIGS = {
'default': {
'toolbar': (
['div','Source','-','Save','NewPage','Preview','-','Templates'],
['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print','SpellChecker','Scayt'],
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
['Form','Checkbox','Radio','TextField','Textarea','Select','Button', 'ImageButton','HiddenField'],
['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
['Link','Unlink','Anchor'],
['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
['Styles','Format','Font','FontSize'],
['TextColor','BGColor'],
['Maximize','ShowBlocks','-','About', 'pbckcode'],
),
}
}

上面的congfig代码是我找的网上的例子,默认情况下的ck是不会打开媒体文件上传的选项的,需要在congfig里面配置,具体是哪一行起作用,没有研究,不敢乱说。

除此之外,还需要对static路径和media路径进行设置,代码如下:

1
2
3
4
5
6
7
8
9
STATIC_URL = '/static/'
#STATIC_ROOT = os.path.join(BASE_DIR,'static/')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
#CKEDITOR_UPLOAD_PATH = 'uploads/'

上面的代码其实和django1使用ck差不多。

3) 同步静态文件,用 python manage.py collectstatic 命令同步静态文件。
完成上述步骤后,就可以测试一下效果,如果代码都写的没问题,站点也可以跑起来的话,多半会有一个问题,就是图片上传成功,但是在ck编辑器内和页面上都无法显示,反正我是碰到了这个问题的,就算从github上面下载的完整的例子也有这个问题。最后还是求助网络和ck的官方文档,还需要在 urlpatterns = [……] 的最后写上 + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)就可以了。

4. 和Pyecharts的集成

首先来说,这个是有官方帮助可以看的,例子也写得比较详细。这里就不赘述了,我自己实践的时候只是碰到了一个问题,就是某个页面上有其他内容的时候,直接放上官方文档的例子没有任何效果,没有深入研究什么原因,我采取了比较简单粗暴的解决方法,直接用了一个iframe加载。

大概就是以上这几点吧,也没做太多的实践,不敢多写,就先到这吧。:)

分享到