我有时会在process_response方法中的自定义中间件中收到此错误.我有以下中间件列表:
MIDDLEWARE_CLASSES = [
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.doc.XViewMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'application.middleware.LastCampaignSessionMiddleware'
Run Code Online (Sandbox Code Playgroud)
]
所以会话中间件放在我的中间件之前.我del request.session在源代码中没有任何表达式.这是process_response方法:
def process_response(self, request, response):
if 'last_campaign_id' in request.session and request.session['last_campaign_id']:
if request.COOKIES['last_campaign_id'] != request.session['last_campaign_id']:
response.set_cookie('last_campaign_id', request.session['last_campaign_id'])
return response
Run Code Online (Sandbox Code Playgroud)
不知道为什么会发生这种情况.
编辑03-08-2012 12-30
它看起来像浏览器请求favicon:
[03/Aug/2012 10:26:42] "GET /favicon.ico/ HTTP/1.1" 404 6701
Run Code Online (Sandbox Code Playgroud)
django中没有默认行为来解析此URL吗?因为我没有明确指定应该处理此请求的视图.我不在页面源代码中使用favicon.所以我想这是浏览器请求/favicon.ico.我想如果404错误HttpRequest将无法正确构造,所以难怪我在请求对象中没有会话.但这只是我的假设.
此外,如果有必要我在使用django dev服务器时遇到此错误.
编辑13-00
我用favicon修复了这个问题,但仍然出错.为什么请求中可能不存在会话?
我真的不明白什么时候创建会话以及创建它的实体(每个ip,每个浏览器,每个登录用户).我在文档中看到默认情况下会话是按访问者创建的 - 但访问者(浏览器或IP)是什么?
我有以下型号:
class Product(models.Model):
name = CharField(max_length=30)
class Store(models.Model):
name = CharField(max_length=30)
product = models.ManyToManyField(Product)
Run Code Online (Sandbox Code Playgroud)
如何获得Store带有名称的产品,product_name并获得所有产品(名称产品除外product_name)?是否可以在一个查询中进行?在原始SQL中,它很简单JOIN.不知道如何通过Django实现它.
我遇到了一些对象管理器create()方法的可疑行为User.如果使用此方法,则看起来password不需要字段来创建User对象.结果你得到User空白password.如果您使用create_user方法并且未指定使用不可用的密码password创建User(通过set_unusable_password()).
我不确定为什么create()方法不会raise exception在您尝试创建用户时没有password- 在文档中指定此字段是必需的.有什么不对劲的create()方法/文档?
我使用的是Ubuntu 12.04 LTS.当我在终端尝试这样的事情时:
rfx@digest:/usr/share/fonts/truetype/ttf-dejavu$ echo ??????????
??????????
Run Code Online (Sandbox Code Playgroud)
符号显示正确.但是如果尝试使用python 2.7打印unicode符号,我会得到:
>>> print u'???'
??????
Run Code Online (Sandbox Code Playgroud)
正如python显示我默认为终端使用utf-8编码:
>>> sys.stdout.encoding
'UTF-8'
Run Code Online (Sandbox Code Playgroud) 我在DB中有一些抽象的条目,它的创建日期.如何获得每月创建的平均条目?
编辑:
表具有Name字段和CreationDate字段.
管理站点中是否有任何功能允许为每个添加/更改表单取消按钮实现,该功能会将我重定向到该表单对象的列表.我的意思是任何形式的一般解决方案.
例如,在某些情况下,在 POST 或 GET 请求之后,我不仅想将用户重定向到特定页面,还想重定向到页面的特定部分。什么会更好:在 Django 中实现这个(重构重定向 url?)或在 javascript 中实现这个?
使用buildout时有2个目录:egg和parts.还有buildout.cfg中的egg和parts声明.这些构建系统元素的目的是什么?
我使用SQL Server 2008.有包含项目的表,它们的状态和日期:
ID Status Date
1 Gone 21-10-2011
2 Cancelled 01-10-2011
3 Won 02-10-2011
4 Won 07-10-2011
5 Gone 02-01-2010
6 Won 24-01-2010
Run Code Online (Sandbox Code Playgroud)
出于统计目的,我需要一些T-SQL查询,结果将返回如下表:
Month Year Total Lost Won
10 2011 4 2 2
01 2010 2 1 1
Run Code Online (Sandbox Code Playgroud)
哪里:
总数表示唯一月 - 月对的总条目金额.
丢失意味着唯一的月 - 年对的总条目金额,状态为"已过去"或"已取消"
赢取是指具有状态"赢"的唯一月 - 月对的总条目金额.
我理解如何获得唯一月份年份的总金额,但不知道如何在结果集中添加Lost和Won列并获得条目金额.当然,如果没有任何"赢"项目的月 - 月对和只有'迷失'它应该是赢得列的0值.
django ×6
python ×2
sql ×2
buildout ×1
count ×1
django-admin ×1
django-forms ×1
django-urls ×1
django-users ×1
egg ×1
group-by ×1
sql-server ×1
t-sql ×1
ubuntu ×1