小编Dan*_*son的帖子

Python仅记录脚本日志

我在我的一个简单脚本中使用Python日志记录模块,目前正在进行以下设置.

logging.basicConfig(format='%(asctime)s %(message)s', level=logging.INFO, datefmt='%Y-%m-%d %H:%M:%S')
logger = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)

我的问题是,它还捕获第三方模块,如请求和输出信息()日志消息.有没有办法抑制这些消息或告诉日志记录模块只记录我自己的脚本中的消息?

python logging

23
推荐指数
2
解决办法
6648
查看次数

将javascript嵌入为base64

我正在研究一个小的GreaseMonkey脚本,我想在其中嵌入一个jQuery插件(Markitup),以便脚本完全自包含(images + js),除了从谷歌提供的jQuery.

我发现网站http://www.greywyvern.com/code/php/binary2base64,如果你对base64编码脚本,你可以用href嵌入javascript,就像从CSS提供basse64图像一样.

<script type="text/javascript" href="data:text/javascript;base64,dmFyIHNjT2JqMSA9IG5ldyBzY3Jv..."></script>
Run Code Online (Sandbox Code Playgroud)

所以我尝试了但是根本无法使用OS X上的Firefox 3.0.5.

我把一个小的测试页面放在一起来隔离问题,但也无法让它在那个页面上工作.

<!DOCTYPE HTML>
<html>
   <head>
      <title>Title</title>
      <meta charset="utf-8">
   </head>
   <body>
      <script href="data:text/javascript;base64,YWxlcnQoJ2FzYWRhc2QnKTsK"></script> 
      <script>alert('a');</script>  
   </body>
</html>
Run Code Online (Sandbox Code Playgroud)

base64字符串(YWxlcnQoJ2FzYWRhc2QnKTsK)说alert('asadasd');我应该得到两个警报,但我看到的唯一警报是第二个警报位于脚本标记内的文本.

我做错了什么或为什么这不起作用,任何想法?

javascript embed base64

11
推荐指数
2
解决办法
1万
查看次数

jQuery $ .get()没有设置标头时的回复字符集?

我刚刚安装了Winamp Song Requester,它是一个带有内置最小HTTP CGI服务器的Winamp网络歌曲请求者插件.

该插件的作用是运行一个Web服务器,为一个html页面提供一些特殊的变量,它取代了请求中的实际数据(播放列表,请求队列,歌曲中剩余的时间等).

我认为这是一个有趣而且很好的项目来学习一些jQuery所以我开始连接我自己的js代码来替换,修复和ajaxify服务的网站从插件,但我现在遇到了字符编码的问题.

在页面上,您可以获得播放列表中所有歌曲的链接.当你点击其中一个链接时,我连接了我自己的jQuery点击功能.因此,当你请求一首歌时我没有重新加载整个页面,而是执行$ .get($(this).attr('href',function(response){... code ...})然后我使用replaceWith来使用新生成的队列替换当前队列,同时添加您的请求.我做同样的事情来显示/更新当前播放和搜索,以便在后台获取所有内容,然后在添加了一些动画的情况下立即替换.

所有的jQuery/Ajax都很棒,但我遇到的最大问题是charset和queue/playlist中的歌曲名称.名称中的特殊字符(åäöé等)根本不起作用.

该插件输出iso-8859-1/latin1中的所有内容,标记中的元标记告诉浏览器该页面为latin1.在浏览器中的正常页面刷新时,这很有效,并且特殊字符显示为正常.但是当我使用jQuery和$ .get()来动态替换代码块时,特殊字符只显示为?

我认为问题在于,如果没有标题说明,jQuery默认相信$ .get()响应是UTF-8.该插件根本没有为encoding/charset设置任何标头,因为我无法控制所有后端以及设置了哪些标头我无法改变它.

我在插件的响应中得到的唯一标头是:

服务器:WinampServer
连接:关闭
Content-Type:text/html

我希望你理解我的问题.我有一个页面,我无法控制后端,我必须使用的是生成的HTML.我无法在响应中更改或添加标头.我需要告诉jQuery,响应实际上是在latin1而不是UTF-8,因此特殊字符的编码不会中断.我在jQuerys ajaxSetup中尝试过scriptCharset:'iso-8859-1',但这只适用于脚本/ json类型,我正在使用HTML响应.

是否有可能或任何其他可以考虑的解决方法?

jquery character-encoding

6
推荐指数
1
解决办法
2万
查看次数

Django经理在模型中设置了_set

我目前正在学习Django,但我无法弄清楚如何自己解决这个问题.我正在阅读" 开发人员库 - 使用Django进行Python Web开发 "一书,在一章中,您将构建一个包含两个模型(故事和类别)的简单CMS系统,一些通用和自定义视图以及视图模板.

该书仅包含列出故事,故事细节和搜索的代码.我想扩展它并构建一个包含类别和故事的嵌套列表的页面.

- Category1
-- Story1
-- Story2
- Category2
- Story3 etc.
Run Code Online (Sandbox Code Playgroud)

我设法弄清楚如何为类别列表添加我自己的通用object_list视图.我的问题是,如果Story是公开的,则Story模型具有STATUS_CHOICES,并且自定义管理器只会默认获取公共Stories.我无法弄清楚如何告诉我的通用类别列表视图也使用自定义管理器,只获取公共故事.一切都有效,除了那个小问题.我能够在一个页面上为所有类别的故事创建所有类别的列表,唯一的问题是该列表包含非公共故事.

我不知道我是否走在正确的轨道上.我的urls.py包含一个抓取所有Category对象的通用视图,在我的模板中我使用category.story_set.all来获取该类别的所有Story对象,然后我循环.

我认为可以在模板中添加if语句,并使用模型文件中的VIEWABLE_STATUS来检查是否应该列出它.该解决方案的问题在于它与DRY不兼容.

是否有可能为Category模型添加某种管理器,只有在类别上使用story_set时才会获取公共Story对象?

或者这是解决我的问题的错误方法?

相关代码

urls.py(仅限类别列表视图):

urlpatterns += patterns('django.views.generic.list_detail',
    url(r'^categories/$', 'object_list', {'queryset': Category.objects.all(),
                                          'template_object_name': 'category'
                                         }, name='cms-categories'),
Run Code Online (Sandbox Code Playgroud)

models.py:

from markdown import markdown
import datetime
from django.db import models
from django.db.models import permalink
from django.contrib.auth.models import User

VIEWABLE_STATUS = [3, 4]

class ViewableManager(models.Manager):
    def get_query_set(self):
        default_queryset = super(ViewableManager, self).get_query_set()
        return default_queryset.filter(status__in=VIEWABLE_STATUS)

class Category(models.Model):
    """A content category"""
    label = …
Run Code Online (Sandbox Code Playgroud)

django django-models

4
推荐指数
1
解决办法
9898
查看次数