2014-10-28 32 views
0

我们在django 1.6.4中做了一个升级到Django 1.7的应用程序,我使用nginx和gunicorn来为应用程序提供服务。django中生成的urls.pyc文件存在问题,如何解决?

随机应用程序返回以下错误:

TypeError at /admin/ihs_booking/occupancydiscount/add/ 
'tuple' object is not callable 
Request Method: POST 
Request URL: http://localhost/admin/ihs_booking/occupancydiscount/add/ 
Django Version: 1.7 
Exception Type: TypeError 
Exception Value: 'tuple' object is not callable 
Exception Location: /usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py in message_user, line 1016 
Python Executable: /usr/bin/python 
Python Version: 2.7.6 

我们试图改变apache的尝试,但仍是同样的问题。

经过调查我们得出的结论是,问题发生在urls.pyc生成。

我们删除pyc,重新启动服务器(apache或nginx + gunicorn),它的工作原理。

过了一段时间后,问题再次出现。

这是urls.py的内容:

#-*- coding=utf-8 -*- 
from django.conf import settings 
from django.conf.urls import patterns, include, url 
from django.contrib import admin 

from .views import home, search, book, confirm_payment, gestion, contact_ihs, test_calendar 

admin.autodiscover() 

urlpatterns = patterns('', 
# Examples: 
# url(r'^blog/', include('blog.urls')), 
url(r'^$', home, name='home'), 
url(r'^calendar/$', test_calendar, name='test_calendar'), 
url(r'^search/$', search, name='search'), 
url(r'^gestion/$', gestion, name='gestion'), 
url(r'^book/$', book, name='search'), 
url(r'^confirm-payment/$', confirm_payment, name='confirm'), 
url(r'^contact/', contact_ihs, name='contact'), 
url(r'^admin/', include(admin.site.urls),) 
) 

#Defining the URLs to upload media files 
if settings.DEBUG: 
urlpatterns += patterns(
    'django.views.static', 
    (r'media/(?P<path>.*)', 
    'serve', 
    {'document_root': settings.MEDIA_ROOT}),) 

我们必须运行与应用程序的nginx + gunicorn因为需要在同一台服务器上运行Django和PHP。

有什么想法? 谢谢!

这里是围绕1061行的admin/options.py。

def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None): 
    opts = self.model._meta 
    app_label = opts.app_label 
    preserved_filters = self.get_preserved_filters(request) 
    form_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, form_url) 
    view_on_site_url = self.get_view_on_site_url(obj) 
    context.update({ 
     'add': add, 
     'change': change, 
     'has_add_permission': self.has_add_permission(request), 
     'has_change_permission': self.has_change_permission(request, obj), 
     'has_delete_permission': self.has_delete_permission(request, obj), 
     'has_file_field': True, # FIXME - this should check if form or formsets have a FileField, 
     'has_absolute_url': view_on_site_url is not None, 
     'absolute_url': view_on_site_url, 
     'form_url': form_url, 
     'opts': opts, 
     'content_type_id': get_content_type_for_model(self.model).pk, 
     'save_as': self.save_as, 
     'save_on_top': self.save_on_top, 
     'to_field_var': TO_FIELD_VAR, 
     'is_popup_var': IS_POPUP_VAR, 
     'app_label': app_label, 
    }) 

我们在admin.py的list_display结尾处有一个“,”我们删除了它,但仍然出现错误。

这是一类admin.py的:

class PromcodeDiscountAdmin(admin.ModelAdmin): 
    list_display = ('code', 'hotel', 'name', 'discount_percentage', 'start', 'end', 'is_active', 'promotional_group') 
    form = PromocodeAdminForm 
    admin.site.register(PromcodeDiscount, PromcodeDiscountAdmin) 
+0

什么网址,会出现这种情况对于删除最后一个逗号?这只是一个吗? – schillingt 2014-10-28 12:58:13

+1

是什么让你认为问题与.pyc或urls.py有关?你可以粘贴'/admin/options.py代码,在第1016行左右' – 2014-10-28 12:58:16

+0

你有一个元组缺少逗号。在你的代码中某处你有类似'('''''''''','''')或''''''''然而,如果不查看你的'admin.py'这个应用程序,它很难确定。 – 2014-10-28 13:09:51

回答

0

我知道这是一个yearago问题,但以供将来参考,
url(r'^admin/', include(admin.site.urls),)