类别归档:django

Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.

RSS feed of django

Django CKEditor未保存窗口关闭提醒

在使用文本编辑器写博客时,有时可能不小心将页面关闭,或者刷新页面,来不及保存的博文就会消失的无影无踪,令人感到十分沮丧。

如果使用Django CKEditor文本编辑器,只需添加一个js插件并进行简单的配置就可以防止不小心关闭表单尚未保存页面的情况,设置步骤如下:

1. 添加jquery.AreYouSure插件,该插件可以在关闭包含未保存表单的页面时弹出相应提示,Github项目地址为:https://github.com/codedance/jquery.AreYouSure。

2. 修改ckeditor\templates\ckeditor\widget.html,将内容替换为下面的代码:

<p><textarea{{ final_attrs|safe }}>{{ value }}</textarea></p>
<script type="text/javascript" src="/static/js/jquery.are-you-sure.js"></script>
<script type="text/javascript">
    if (typeof CKEDITOR == "undefined") {
        $( document ).ready(function() {
            CKEDITOR.replace("{{ id }}", {{ config|safe }});
            $('form').areYouSure();
        });
    } else {
        CKEDITOR.replace("{{ id ...

继续阅读

SAE Django KVDB管理面板

SAE KVDB为用户提供分布式的key-value数据存储服务,但是由于官方未提供管理面板,因此KVDB的数据管理操作或多或少会有些不便。

笔者根据SAE KVDB的Python API编写了一个简单的SAE KVDB Django管理面板,支持简单的按照Key前缀(Prefix)查询和键值对的新增、修改和删除功能。

Github的项目地址:sae-django-kvpanel

由于SAE Python API中的前缀查找方法get_by_prefix(prefix, limit=100, marker=None)的一些限制,分页功能还不太完善。

前缀查找方法声明如下:

get_by_prefix(prefixlimit=100marker=None)

从KVDB中查找指定前缀的 key/value pair。返回一个generator,yield的item为一个(key, value)的tuple。

参数:
  • prefix – 需要查找的key的前缀。
  • limit – 最多返回的item个数,默认为100。
  • marker – 指定从哪一个key开始继续查找,只返回该key后面的结果(该key不含在内)。

项目演示效果截图如下:

sae-django-kvpanel

项目未添加权限管理等内容,可根据需求自行添加权限控制。

添加步骤: ...

继续阅读

CDN bootstrap glyphicons图标IE下无法显示

百度,新浪等站点提供了CDN JavaScript公用库,包含了前端开发常用的JavaScript库文件与CSS样式表,开发者可以很方便地从这些CDN引用所需的样式文件,还可以保证不错的响应速度。

bootcss中文站、百度的bootstrap库引用方式如下所示:

<link rel="stylesheet" href="https://cdn.bootcss.com/twitter-bootstrap/3.0.3/css/bootstrap.min.css">
<script src="https://cdn.bootcss.com/twitter-bootstrap/3.0.3/js/bootstrap.min.js" type="text/javascript"></script>
<script src="https://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
<link href="https://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet" />

然而,在使用百度和新浪CDN的bootstrap 3.0.3时,笔者发现在IE下部分glyphicons图标无法正常显示,而在chrome浏览器下可以显示。

例如https://bookshadow.com/weblog/2014/05/13/bootstrap-carousel-js/中的轮播组件,在chrome下可以看到carousel左右两侧的三角形glyphicons图标,如下图所示:

bootstrap-carousel-glyphicons-chrome

而在IE浏览器下却无法显示,效果见下图。

bootstrap-carousel-glyphicons-ie

查阅stackoverflow上的相关问答,发现此贴中也提到了相同的问题:http://stackoverflow.com/questions/19026479/only-some-glyphicons-showing-in-ie

用户olahell的回答比较妥当:

I have found the solution. It was quite simple. Unfortunately I won't be able ...

继续阅读

Django Admin添加自定义模块

Django Admin是Django框架自带的管理模块,功能十分强大,只需简单的配置即可将数据库表中的数据添加至Django Admin进行管理,包含了常用的增删改查功能。

新增自定义管理模块配置的具体操作步骤如下:

0. 首先需要启用Django Admin模块,过程从略

1. 执行manage.py inspectdb > models.py (根据数据库表结构逆向生成models)

2. 将models.py移动至mysite目录下(模块目录)

3. 在mysite目录下新增admin.py,添加内容:


from mysite.models import Student
from django.contrib import admin
# Create your models here.
class StudentAdmin(admin.ModelAdmin):
	list_display = ['id','name','class']
	search_fields = ['id','name','class']

admin.site.register(Student, StudentAdmin) ...

继续阅读

Django设置301域名重定向

Django网站域名发生迁移变更时,如何告知搜索引擎?

这时需要使用301重定向,把通过旧域名URL访问站点的用户引导至新的域名。

301 Moved Permanently是服务器返回的HTTP头信息(header)中的状态码的一种。当用户或搜索引擎向网站服务器发出浏览请求时,返回301状态码代表网页永久性地迁移到了另一个URL。

例如,网站迁移到了新的域名:www.example.com,修改wsgi.py,在尾部添加如下代码:


import django.core.handlers.wsgi
_application = django.core.handlers.wsgi.WSGIHandler()

DOMAIN_NAME = 'www.example.com'
def application(environ, start_response):
  if environ['HTTP_HOST'] != DOMAIN_NAME:
    location = DOMAIN_NAME + environ['PATH_INFO']
    if environ.get('QUERY_STRING'):
      location += '?' + environ['QUERY_STRING']
    start_response('301 Redirect', [('Location', location),])
    return []
  return ...

继续阅读