2011-08-05 44 views
5

tôi đã làm việc trên dự án của tôi trong một thời gian và gần đây nhận thấy rằng khi tôi cố gắng để đi đến localhost/admin/nó mang lại cho ra một lỗi:đăng nhập quản trị ngừng hoạt Django

DoesNotExist at /admin/ 

Site matching query does not exist. 

Request Method:  GET 
Request URL: http://127.0.0.1:8000/admin/ 
Django Version:  1.3 
Exception Type:  DoesNotExist 
Exception Value:  

Site matching query does not exist. 

Exception Location:  C:\Python27\lib\site-packages\django\db\models\query.py in get, line 349 

Thông thường khi tôi đến đó nó làm cho tôi đăng nhập trước và sau đó chuyển hướng cho tôi, nhưng bây giờ nó chỉ là lỗi trừ khi tôi đã đăng nhập

Tôi chỉ có thể nhập quản trị viên của mình sau khi đăng nhập với tư cách quản trị viên trong chức năng đăng nhập cục bộ mà tôi tạo cho người dùng và sau đó chuyển đến trang đó . Ngoài ra, đăng xuất khỏi trang quản trị đã ngừng hoạt động cho cùng một lỗi.

Tôi đang làm việc để thêm trường mới vào mô-đun người dùng và hiển thị biểu mẫu tạo người dùng mới khi điều này xảy ra.

có ai có vấn đề tương tự không? Hoặc có thể ai đó biết điều gì gây ra điều này?

+0

Có lẽ thiết DEBUG = True ở settings.py của bạn để chúng ta có thể thấy một số chi tiết .. –

Trả lời

11

Kiểm tra điều này thread, có vẻ như có liên quan.

Từ bài cuối cùng:

Kể từ khi ngoại lệ nói "phù hợp truy vấn 'trang web' không tồn tại", và các tài liệu nói điều gì đó về SITE_ID mô tả trang web trong bảng cơ sở dữ liệu django_site, tôi đã đi trước và xem cơ sở dữ liệu (sqlite) của tôi. Bảng django_site trống, vì vậy tôi đã thêm một hàng có id == 1 (giống như tôi có trong settings.py) và sau đó nó hoạt động.

Nếu bạn không nhớ mất dữ liệu, bạn có thể thử chạy 'sql appname', vì bảng này được cho là được tạo tự động.

+0

Thật ra yeah! Đó là vấn đề. Tôi đã tạo một ID trang web khác vì tôi muốn thông tin trang web được gửi tới người dùng khi anh đặt lại mật khẩu của mình. Vì vậy, đối với một số lý do khi Site_id = 2 nó không hoạt động nhưng site_id = 1 không! Cảm ơn bạn :) – Angie

+4

Trong trường hợp người khác chạy vào điều này, tôi đã nhận được lỗi tương tự sau khi xóa "example.com" khỏi danh sách trang web. Mất một lúc để tìm nguồn bởi vì phiên đăng nhập của tôi vẫn hoạt động. Nhận xét ra django.contrib.sites trong INSTALLED_APPS đã giải quyết vấn đề này. –

+0

@JosephMornin Tôi cũng gặp vấn đề này vì xóa example.com. Tuy nhiên, một giải pháp khác (nếu bạn cần giữ ứng dụng ngồi) là mở một trình bao Django và tạo một trang mới và lưu nó, sau đó thay đổi SITE_ID trong settings.py thành id của trang web bạn vừa tạo. Bằng cách này, bạn vẫn có thể sử dụng ứng dụng trang web nếu cần. – hangtwenty

8

Hãy thử nhận xét hoặc xóa 'django.contrib.sites' từ cài đặt INSTALLED_APPS trên settings.py của bạn, điều đó sẽ giải quyết được sự cố.

Bạn cũng có thể kiểm tra bảng trang web của bạn:

python manage.py shell 
from django.contrib.sites.models import Site 
Site.objects.all() 

Và nếu không có trang web được định nghĩa cho localhost, bạn có thể tạo ra nó hoặc tái tạo nó:

Site.objects.create(pk=1, domain='127.0.0.1:8000', name='localhost') 

Đó làm việc cho tôi.

1

Đối với bất cứ ai cố gắng để cài đặt django-allauth cho django 1.8 hoặc cao hơn và nhận được lỗi này sau khi làm theo hướng dẫn tại đây:

http://django-allauth.readthedocs.org/en/latest/installation.html

Chỉ cần thêm dòng sau vào urls.py:

from django.contrib.sites.models import Site 

Hy vọng điều này sẽ tiết kiệm thời gian của ai đó.

0

INSTALLED_APPS = [ .... 'django.contrib.sites', 'allauth', 'allauth.account', 'allauth.socialaccount', ....bla bla bla ] SITE_ID = 1

thử thêm SITE_ID = 1 ..it làm việc cho tôi

Các vấn đề liên quan