簡體   English   中英

找不到語言時,Django將錯誤500重定向到404

[英]Django redirect error 500 to 404 when language not found

我注意到,當settings.py中引用一種語言時,如果網站中沒有適當的頁面,它將生成500個頁面。

舉個例子 :

    LANGUAGES = (
    ('en', gettext('English')),
    ('fr', gettext('French')),
    ('it', gettext('Italian')),
    ('es', gettext('Spanish')),
    ('de', gettext('German')),
    ('el', gettext('Greek')),
    ('tr', gettext('Turkish')),
    ('ja', gettext('Japanese')),
    ('pt', gettext('Portuguese')),
    ('ar', gettext('Arabic')),
)

所以,在我的網站, en fr es deja被翻譯和現在在網站上。 其他人不是。 然后,如果您嘗試訪問:example.org/el/whatever,則會引發500錯誤。

我想要一個404,以便讓用戶進入網站。

是否有人對此問題有任何線索? 還是我必須從設置中刪除語言?

非常感謝。

編輯:這是我有此錯誤的報告:

 Internal Server Error: /it/blog/
Traceback (most recent call last):
  File "/var/www/webapps/lib/python3.4/site-packages/cms/views.py", line 34,
 in _handle_no_page
    resolve('%s$' % request.path)
  File
 "/var/www/webapps/lib/python3.4/site-packages/django/core/urlresolvers.py", line 494, in resolve
    return get_resolver(urlconf).resolve(path)
  File
 "/var/www/webapps/lib/python3.4/site-packages/django/core/urlresolvers.py", line 358, in resolve
    raise Resolver404({'tried': tried, 'path': new_path})
django.core.urlresolvers.Resolver404: {'tried': [[<RegexURLResolver <module
 'autocomplete_light.urls' from
 '/var/www/webapps/lib/python3.4/site-packages/autocomplete_light/urls.py'> (None:None) ^autocomplete/>],
 [<RegexURLResolver <module 'djangocms_contact.urls' from
 '/var/www/webapps/proj_website/app/djangocms_plugins/djangocms_contact/urls.py'> (None:None)
 ^api/contact_plugin/>], [<RegexURLResolver <module 'taggit_autosuggest_select2.urls' from
 '/var/www/webapps/lib/python3.4/site-packages/taggit_autosuggest_select2/urls.py'>
 (None:None) ^taggit_autosuggest_select2/>], [<RegexURLPattern None
 ^sitemap\.xml$>], [<RegexURLPattern None ^sitemap-(?P<section>.+)\.xml$>],
 [<LocaleRegexURLResolver <RegexURLPattern list> (None:None) ^it/>, <RegexURLPattern
 None ^share/>], [<LocaleRegexURLResolver <RegexURLPattern list> (None:None)
 ^it/>, <RegexURLResolver <module 'djangocms_job.urls' from
 '/var/www/webapps/proj_website/app/djangocms_plugins/djangocms_job/urls.py'> (None:None)
  ^api-job_plugin/>], [<LocaleRegexURLResolver <RegexURLPattern list>
 (None:None) ^it/>, <RegexURLResolver <RegexURLPattern list> (admin:admin)
 ^admin/>], [<LocaleRegexURLResolver <RegexURLPattern list> (None:None) ^it/>,
 <RegexURLResolver <module 'cms.urls' from
 '/var/www/webapps/lib/python3.4/site-packages/cms/urls.py'> (None:None) ^>, <RegexURLPattern pages-details-by-slug
 ^(?P<slug>[0-9A-Za-z-_.//]+)/$>], [<LocaleRegexURLResolver <RegexURLPattern
 list> (None:None) ^it/>, <RegexURLResolver <module 'cms.urls' from
 '/var/www/webapps/lib/python3.4/site-packages/cms/urls.py'> (None:None) ^>,
 <RegexURLPattern pages-root ^$>], [<RegexURLResolver <module 'rosetta.urls' from
 '/var/www/webapps/lib/python3.4/site-packages/rosetta/urls.py'> (None:None)
 ^rosetta/>]], 'path': 'it/blog/$'}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File
 "/var/www/webapps/lib/python3.4/site-packages/django/core/handlers/base.py", line 111, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/var/www/webapps/lib/python3.4/site-packages/cms/views.py", line
 118, in details
    return _handle_no_page(request, slug)
  File "/var/www/webapps/lib/python3.4/site-packages/cms/views.py", line 38,
 in _handle_no_page
    raise exc
django.http.response.Http404: {'tried': [[<RegexURLResolver <module
 'autocomplete_light.urls' from
 '/var/www/webapps/lib/python3.4/site-packages/autocomplete_light/urls.py'> (None:None) ^autocomplete/>], [<RegexURLResolver
 <module 'djangocms_contact.urls' from
 '/var/www/webapps/proj_website/app/djangocms_plugins/djangocms_contact/urls.py'> (None:None) ^api/contact_plugin/>],
 [<RegexURLResolver <module 'taggit_autosuggest_select2.urls' from
 '/var/www/webapps/lib/python3.4/site-packages/taggit_autosuggest_select2/urls.py'>
 (None:None) ^taggit_autosuggest_select2/>], [<RegexURLPattern None
 ^sitemap\.xml$>], [<RegexURLPattern None ^sitemap-(?P<section>.+)\.xml$>],
 [<LocaleRegexURLResolver <RegexURLPattern list> (None:None) ^it/>, <RegexURLPattern None
 ^share/>], [<LocaleRegexURLResolver <RegexURLPattern list> (None:None)
 ^it/>, <RegexURLResolver <module 'djangocms_job.urls' from
 '/var/www/webapps/proj_website/app/djangocms_plugins/djangocms_job/urls.py'> (None:None)
 ^api-jo
 b_plugin/>], [<LocaleRegexURLResolver <RegexURLPattern list> (None:None)
 ^it/>, <RegexURLResolver <RegexURLPattern list> (admin:admin) ^admin/>],
 [<LocaleRegexURLResolver <RegexURLPattern list> (None:None) ^it/>,
 <RegexURLResolver <module 'cms.urls' from
 '/var/www/webapps/lib/python3.4/site-packages/cms/urls.py'> (None:None) ^>, <RegexURLPattern pages-details-by-slug
 ^(?P<slug>[0-9A-Za-z-_.//]+)/$>], [<LocaleRegexURLResolver <RegexURLPattern list>
 (None:None) ^it/>, <RegexURLResolver <module 'cms.urls' from
 '/var/www/webapps/lib/python3.4/site-packages/cms/urls.py'> (None:None) ^>, <RegexURLPattern
 pages-root ^$>], [<RegexURLResolver <module 'rosetta.urls' from
 '/var/www/webapps/lib/python3.4/site-packages/rosetta/urls.py'> (None:None) ^rosetta/>]],
 'path': '/it/blog/'}

它以這樣的方式繼續(我還有2個大段),開頭為:

Traceback (most recent call last):
  File "/var/www/webapps/lib/python3.4/site-packages/cms/views.py", line 34,

和:

Traceback (most recent call last):
  File
 "/var/www/webapps/lib/python3.4/site-packages/django/core/handlers/base.py", line 150, in get_response
    response = callback(request, **param_dict)
  File "/var/www/webapps/proj_website/app/proj/views.py", line 84, in
 custom_page_not_found

您的views.py似乎出了點問題。

因此,您需要在出現問題的視圖中執行以下操作:

from django.http import Http404

def your_view(request):
    try:
       code_that_must_work_but_can_fail="goes here"
    except Exception, e:
       raise Http404

因此,我們在這里所做的只是將所有代碼都包裝在try中的view:except中:因此,如果somethng在try塊中出錯,它將移至except塊,並且有raise指令返回404頁面。 請在模板中創建404.html和500.html,即使有500個頁面也要有漂亮的頁面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM