我有一个Django-CMS插件,用于显示对象列表.插件所需的功能是列表是分页的,可以根据列表中对象的属性重新排序.
在这种特殊情况下使用ajax处理这个功能并不是一个理想的解决方案,因此我计划使用django Paginator,它需要一个'page'查询字符串参数,并传递一个'order'查询字符串参数,我将用它来定义顺序查询集.
问题是我无法看到从插件渲染功能中访问请求对象.
有谁知道是否可以从渲染功能中访问请求对象,或者可以建议一个解决方法?
这似乎应该很简单但我必须做错事.我之前已经为各个应用程序扩展了管理模板,但这是我第一次尝试扩展以全面修改某些内容.
我想在整个管理员中更改帮助文本的颜色,因此我想扩展base.html模板的extrastyle块.
所以在我的主模板文件夹中,我使用以下代码创建了admin/base.html:
{% extends 'admin/base.html' %}
{% block extrastyle %}
{# Changing the color of the help text across the entire admin #}
<style>
.help, p.help {
font-size: 10px !important;
color: #f00;
}
</style>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试访问管理员时,服务器完全崩溃并出现"总线10"错误.我相信这是因为它试图扩展自己.由于Django在我的应用模板文件夹中排名第一,{%extend'admin/base.html'%}首先发现自己并且世界爆炸.
但是,如果我尝试将基本html放在其他任何地方它不起作用.如果我将它放在我的一个应用程序中,它只适用于该应用程序,但如果我将它放在其他地方,它就会被忽略.
从我的理解,这是一个扩展而不是覆盖django模板的最佳实践,所以我想让它工作.但是,如果我能做到的唯一方法是覆盖它,那么这就是我要采取的路线.
我正在使用带有apphooks的django-cms来显示书籍详细信息.我需要带有app hook的页面来接受一个slug,它指定要显示的书.
我创建了一个名为"books"的页面,并添加了apphook'BookDetailApp'.
这是我的books.cms_app文件的样子:
class BooksApp (CMSApp):
name = _('Book Detail Page Application')
urls = ['books.urls']
apphook_pool.register(BooksApp)
Run Code Online (Sandbox Code Playgroud)
这是我的books.urls的样子:
urlpatterns = patterns('',
url(r'^(?P<slug>[\w\-]+)?', BookDetailView.as_view(), name='book_detail'),
)
Run Code Online (Sandbox Code Playgroud)
这是我的books.views文件的样子:
class BookDetailView (DetailView):
model = Book
template_name = 'layouts/book-detail.html'
context_object_name = 'book'
Run Code Online (Sandbox Code Playgroud)
当我直接进入预订详细信息页面时,一切正常.所以http://localhost:8000/books/the-book-slug/我的工作方式正是如此.
问题是我需要能够从主页上的促销链接到特定的书籍详细信息页面,并且没有任何预期的方法对我有用.
使用django-cms中的page_url模板标签不起作用,因为它只接受一个参数,所以我无法提供确定要显示哪本书所需的slug:
<a href="{% page_url 'book_detail' %}">go</a>
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,这只重定向会http://localhost:8000/books/引发错误,因为未包含所需的slug.
所以我的下一个选择是使用url模板标签或get_absolute_url()在模型上定义一个函数.这些选项都不起作用:
<a href="{% url book_detail book.slug %}">go</a>
def get_absolute_url(self):
return reverse('book_detail', args=[self.slug])
Run Code Online (Sandbox Code Playgroud)
这两者都会导致NoReverseMatch: Reverse for 'book_detail' not found错误.
如果我将books.urls conf包含在我的主url conf中,那么它可以工作.因此,如果网址只被cms apphook使用,它似乎无法被django逆转.
在我的主网址中包含books.urls似乎是一个肮脏的解决方案,我绝对不想硬编码模板或get_absolute_url函数中的网址.这些解决方案似乎都不是'pythonesque'. …
是否可以通过将 hstore 值转换为int或来过滤查询集float?
我遇到了一个问题,我们需要向现有数据模型添加更强大的查询。数据模型使用HStoreField来存储大部分建筑数据,我们需要能够对它们进行查询/过滤,并且一些值需要被视为数值。
但是,由于这些值被视为字符串,因此会逐个比较它们并导致不正确的查询。例如,'700' > '1000'。
因此,如果我想查询 sqft 值在 700 到 1000 之间的所有项目,我会得到零结果,即使我可以清楚地看到有数百个项目的值在该范围内。如果我只查询 sqft 值 >= 700 的项目,我只会得到 sqft 值以 7、8 或 9 开头的结果。
我还尝试使用来自的 JsonField 进行测试django-pgjson(因为我们还没有使用 Django 1.9),但它似乎有同样的问题。
设置
Django==1.8.9
django-pgjson==0.3.1 (for jsonfield functionality)
Postgres==9.4.7
Run Code Online (Sandbox Code Playgroud)
模型.py
Django==1.8.9
django-pgjson==0.3.1 (for jsonfield functionality)
Postgres==9.4.7
Run Code Online (Sandbox Code Playgroud)
示例数据
这是 hstore 字段中某些数据的示例。
address1: ...
address2: ...
city: ...
state: ...
zipcode: ...
data: {
'year_built': '1995',
'building_type': 'residential',
'building_subtype': 'single-family',
'bedrooms': '2',
'bathrooms': '1', …Run Code Online (Sandbox Code Playgroud) 我有两个heroku应用程序,分期和生产.我可以毫无问题地将我的最新代码推送到登台服务器,但是当我尝试将我的最新代码推送到生产时,我收到超时错误.
看看人们遇到的类似错误,听起来可能是需求文档或其中一个软件包的问题.但我不知道如何开始调试.我们使用了很多外部包.事实上,它适用于一个heroku应用程序而不是另一个应用程序,这让我想知道它以前的应用程序究竟有多少.
它似乎在过程中的不同时间超时,没有任何其他错误.第一次在开始安装psycopg2后超时,但最后一次它超过了psycopg2然后在gevent安装上超时.
我很茫然,这是我第一次遇到这个问题而且这个版本需要尽快出去.有没有人有任何想法?
这里有尽可能多的日志,因为stackoverflow将允许我发布:
Running setup.py install for django-extensions
Running setup.py install for dj-database-url
Running setup.py install for django-grappelli
Running setup.py develop for ckeditor
Creating /app/.heroku/python/lib/python2.7/site-packages/django-ckeditor.egg-link (link to .)
Adding django-ckeditor 3.6.2 to easy-install.pth file
Installed /app/.heroku/src/ckeditor
Running setup.py install for django-heroku-memcacheify
Running setup.py install for django-tastypie
Running setup.py install for boto
package init file 'tests/db/__init__.py' not found (or not a regular file)
package init file 'tests/ec2/elb/__init__.py' not found (or not a regular file)
package init file 'tests/utils/__init__.py' not …Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用 haystack 进行完整站点搜索,该搜索在书籍、作者、事件和视频模型中进行搜索。
然后我有主书页,我只想在其中搜索 Books 模型。
我找到了这篇文章: 如何在 Haystack 中仅返回特定类型的索引对象
但是,它似乎对我不起作用。我正在使用简单的后端在本地进行测试,我知道这确实存在一些问题,我不确定这是否相关。
我的 search_indexes.py 文件如下所示:
class BookSearchIndex (SearchIndex):
text = CharField(document=True, use_template=True)
title_web = CharField(model_attr='title_web', boost=1.125)
on_sale_date = CharField(model_attr='on_sale_date')
def index_queryset(self):
return Book.objects.active().filter(publish_level='published')
site.register(Book, BookSearchIndex)
Run Code Online (Sandbox Code Playgroud)
在我看来,如果通过了搜索查询,则仅返回具有该查询的书籍,否则显示所有书籍:
search = self.request.GET.get('search', None)
if search:
clean_query = SearchQuerySet().query.clean(search)
sqs = SearchQuerySet().models(Book).filter(content=clean_query).order_by('-on_sale_date')
else:
sqs = SearchQuerySet().models(Book).order_by('-on_sale_date)
Run Code Online (Sandbox Code Playgroud)
搜索根据搜索查询正确过滤项目,但它仍然返回所有模型。它不仅限于 Book 模型。
这部分似乎没有效果:
SearchQuerySet().models(Book)
Run Code Online (Sandbox Code Playgroud)
谁能帮我弄清楚我做错了什么?
django ×6
django-cms ×2
django-admin ×1
heroku ×1
hstore ×1
paginator ×1
plugins ×1
postgresql ×1
python ×1
request ×1
reverse ×1
search ×1
timeout ×1
url ×1