小编Oli*_*Oli的帖子

提高404并继续URL链

我有一个像这样的URL模式:

urlpatterns = (
    url(r'^$', list_titles, name='list'),
    url(r'^(?P<tag>[a-z\-0-9]+?)/$', list_titles, name='filtered-list'),
    url(r'^(?P<title>\S+?)/$', show_title, name='title'),
)
Run Code Online (Sandbox Code Playgroud)

filtered-listtitle匹配同样的事情.

如果有事情匹配的可用列表tagfiltered-list,我要list_titles火了.但是,如果没有匹配tag,我想将其重新发送回URL处理器,以便show_title激活.

如果没有匹配的标题,我会在那里提出一个合适的404.

我知道我可以从视图中做到这一点......但是有点臭,不得不将进程硬连接到视图中.我希望通过URL命令来决定首先选择哪些内容以及它的内容.

django django-signals django-urls django-views

29
推荐指数
1
解决办法
3万
查看次数

Django模型中的隐藏字段

前一阵子我做了一个Model课程.我为它制作了几个ModelForms,它工作得非常漂亮.

我最近不得不添加另一个可选(blank = True,null = True)字段,以便我们可以在用户之间存储一些关系数据.它本质上是一个推荐系统.

问题是添加这个新字段意味着引用字段显示我没有更改ModelForms以排除它.通常这只意味着额外的10分钟通过并排除它们但在这种情况下,由于项目管理政策不受我的控制,我只能控制此应用程序的模型.

我可以:

  • 将字段设置为自动排除?
  • 设置它使它呈现为隐藏(可接受但不完美)?

django django-models django-forms

29
推荐指数
2
解决办法
4万
查看次数

为Django模型生成非顺序ID/PK

我正在开始研究新的webapp.部分内容将为用户提供可以在一对多关系中自定义的页面.这些页面自然需要具有唯一的URL.

Django留给自己的设备,通常AUTOINCREMENT会为模型分配标准ID.虽然这很有效,但它看起来并不好看,它也使得页面非常容易预测(在这种情况下,这是不可取的).

而不是1,2,3,4我想要设置长度,随机生成的字母数字字符串(例如h2esj4).可能的36个字符中的6个点应该给我超过20亿个组合,在这个阶段应该绰绰有余.当然,如果我可以在以后扩展它,那也会很好.

但有两个问题:

  1. 随机字符串偶尔会拼出坏词或其他令人反感的短语.有没有一个体面的方式回避这个?公平地说,我可能会接受一个数字字符串,但它确实会对冲突的可能性产生重大影响.

  2. 如何让Django(或数据库)在插入时进行繁重的工作?我宁愿不插入然后解决密钥(因为这不是一个关键).我假设有并发问题也要注意,但如果同时生成两个新页面而第二个(克服所有可能性)神奇地获得与第一个提交之前的第一个相同的密钥.

我不认为这与URL缩短器生成ID的方式有一百万英里的差异.如果有一个体面的Django实现,我可以捎带它.

django url primary-key django-models

29
推荐指数
3
解决办法
1万
查看次数

Django 1.11注释子查询聚合

这是一个前沿的功能,我目前正在解决这个问题并迅速流血.我想在现有的查询集上注释子查询聚合.在1.11之前执行此操作要么意味着自定义SQL,要么锤击数据库.这是这方面的文档,以及它的示例:

from django.db.models import OuterRef, Subquery, Sum
comments = Comment.objects.filter(post=OuterRef('pk')).values('post')
total_comments = comments.annotate(total=Sum('length')).values('total')
Post.objects.filter(length__gt=Subquery(total_comments))
Run Code Online (Sandbox Code Playgroud)

他们在总体上注释,这对我来说似乎很奇怪,但无论如何.

我正在努力解决这个问题,所以我正在把它煮回来,回到我有数据的最简单的现实世界的例子.我有Carparks包含很多Spaces.使用,Book?Author如果这让你更快乐,但是 - 现在 - 我只想使用Subquery*来注释相关模型的计数.

spaces = Space.objects.filter(carpark=OuterRef('pk')).values('carpark')
count_spaces = spaces.annotate(c=Count('*')).values('c')
Carpark.objects.annotate(space_count=Subquery(count_spaces))
Run Code Online (Sandbox Code Playgroud)

这给了我一个可爱的ProgrammingError: more than one row returned by a subquery used as an expression,在我的脑海里,这个错误非常有意义.子查询返回带有注释总计的空格列表.

这个例子表明会发生某种魔法,我最终会得到一个我可以使用的数字.但这不是在这里发生的?如何对聚合子查询数据进行注释?

嗯,有些东西被添加到我的查询的SQL中......

我建造了一个新的停车场/太空模型,它起作用了.所以下一步是弄清楚我的SQL中毒了什么.根据Laurent的建议,我看了一下SQL并尝试使它更像是他们在答案中发布的版本.这就是我发现真正问题的地方:

SELECT "bookings_carpark".*, (SELECT COUNT(U0."id") AS "c"
FROM "bookings_space" U0
WHERE U0."carpark_id" = ("bookings_carpark"."id")
GROUP BY U0."carpark_id", U0."space"
)
AS "space_count" FROM "bookings_carpark"; …
Run Code Online (Sandbox Code Playgroud)

django django-aggregation django-annotate django-subquery

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

从命令行更改Windows主机名

是否可以使用开箱即用的工具从命令行更改Windows 2003中的主机名?

windows command-line

27
推荐指数
3
解决办法
17万
查看次数

为什么Bootstrap包含一个bootstrap-theme文件?

问题类似于这个问题:如何在bootstrap 3中使用bootstrap-theme.css?但不是重复.我在.less级别与Bootstrap进行交互,并在每次进行更改时重新编译它.

正如我所说,我正在开发一个Bootstrap主题less.我在这里编辑位,在那里改变变量.切除未使用的组件.将我的大部分新CSS放入/less/theme.less.在它的结束,我留下了两个CSS文件:/dist/css/bootstrap.css/dist/css/bootstrap-theme(哦,好吧,是的......和他们的.min.css同行,你迂腐knowitall)

将此输出拆分为两个单独的文件有什么意义?他们都偏离了"股票"设置(只是改变了less/variables.less会这样做)所以这不是重复的努力吗?这不是额外的请求,我们(认为他们最了解的开发人员)经常告诉大三学生应该不惜一切代价避免吗?

在开发自定义Bootstrap主题时,这些是我的选择:

  1. 抛弃包含theme.less并包含我在主要Bootstrap构建中的更改,
  2. 在核心引导程序构建中没有任何改动,并覆盖我的内容theme.less,
  3. 继续我正在做的事情,改变它们并使用两个CSS文件.

我该怎么办?为什么?

在相关的说明中,如果您单击Download Bootstrap,我是否应该从您获得的文件构建Bootstrap?事后看来,这些似乎都是为了构建Bootstrap文档(那里有大量的Jekyll废话,我只是放弃了).是否有一个"干净"的Bootstrap版本适用于想要在没有文档的情况下自定义Bootstrap的人?

css twitter-bootstrap

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

将PHP对象缓存到文件的方法?

在ASPNET中,我逐渐喜欢Application和Cache商店.他们太棒了.对于没有经验的人,你可以把数据逻辑对象扔进去,嘿嘿,你只需要查询一次数据库中的一些数据.

到目前为止,最好的ASPNET功能之一,IMO.

我已经放弃了Windows for Linux,因此放弃了PHP,Python和Ruby for webdev.我使用PHP最多,因为我开发了几个开源项目,都使用PHP.

毋庸置疑,我已经探讨了PHP在缓存数据对象方面所提供的功能.到目前为止,我玩过:

  1. 序列化到文件(一个非常慢/昂贵的过程)
  2. 将数据写入文件作为JSON/XML/plaintext/etc(对于读操作来说甚至更慢)
  3. 将数据写入文件为纯PHP(最快的读取,但相当复杂的写操作)

我现在应该强调,我正在寻找一种不依赖于第三方应用程序(例如memcached)的解决方案,因为应用程序安装在各种场景中,其中大多数都没有安装权限(例如:a便宜的共享主机帐户).

那么回到我现在正在做的事情,是坚持保存文件? Rule 1在生产服务器安全性一直是禁用文件写入,但我真的没有看到任何方式PHP 可以缓存,如果它无法写入.是否有任何提示和/或技巧来提高安全性?

我还忘记了另一种持久存档的方法吗?

在"有限"的环境中有没有更好的缓存方法?

php caching

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

在Django中进行简单搜索

我有一个非常简单的博客应用程序,我想为它添加一个非常简单的搜索功能.

我的模型有3个关键字段.

class BlogPost(models.Model):
    title = models.CharField(max_length=100) # the title
    intro = models.TextField(blank=True, null=True) # an extract
    content = models.TextField(blank=True, null=True) # full post
Run Code Online (Sandbox Code Playgroud)

我不需要谷歌.我不想搜索评论(无论如何都在Disqus上搜索).我只想要一个日期排名,关键字过滤的帖子集.

我在谷歌上找到的某种形式的"django"和"搜索"的东西都带来了非常复杂的Haystack +后端解决方案.我不需要那一切.我不想在低使用率功能上占用更多资源(在我移植到Django之前我曾经有一个搜索框,而且它每个月可能有4次搜索).

我花时间在这里问(而不是只是写一个凌乱的小脚本)的原因是这已经存在于管理员.您可以设置要搜索的列,然后只搜索它"只是工作".

有没有办法处理管理员提供的搜索并将其拉入我面向用户的应用程序?

django search

25
推荐指数
2
解决办法
3万
查看次数

对于列表,除非在python中为空

在过去的几天里,我一直在编写很多这样的结构:

list = get_list()
if list:
    for i in list:
        pass # do something with the list
else:
    pass # do something if the list was empty
Run Code Online (Sandbox Code Playgroud)

很多垃圾和我将列表分配给一个真正的变量(将其保存在内存中的时间超过了需要).Python已经简化了我的很多代码直到现在......有一个简单的方法吗?

(我的理解是,elsefor: else:它循环,为空或不经过结构始终触发-所以不是我想要的)

python for-loop

23
推荐指数
3
解决办法
4万
查看次数

为什么Firefox在页面调整大小时重新请求字体?

我有一个相当简单的Bootstrap3站点,其中包含一些嵌入CSS的自定义字体和@font-face规则.它很棒.这些页面是由Django生成的,所以当我测试它时,我也可以看到浏览器发出的本地请求.

当我调整浏览器窗口的大小时,我看到了数百个字体请求:

127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_400italic.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_400.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_700.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_400italic.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_400.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_700.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_400italic.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET …
Run Code Online (Sandbox Code Playgroud)

css firefox font-face twitter-bootstrap-3

21
推荐指数
1
解决办法
624
查看次数