У меня есть база данных и активирован интерфейс администратора. Когда я перехожу к интерфейсу администратора и нажимаю «Пользователи», есть один пользователь с именем пользователя ayman
. Я следую учебнику, сделанному в книге под названием «Packt Publishing, Learning Website Development с Django». Теперь, в моем urls.py
, это то, что у меня есть.Django не видит пользователей в базе данных?
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^$', main_page),
url(r'^user/(\w+)/$', user_page),
)
В моих views.py
, это мой user_page
def user_page(request, username):
try:
user = User.objects.get(username=username)
except:
raise Http404(username +' not found.')
bookmarks = user.bookmark_set.all()
variables = {
'username': username,
'bookmarks': bookmarks
}
return render(request, 'user_page.html', variables)
Я использую общее User
представление для управления своими пользователей. Когда я иду в терминал и сделать
$python manage.py shell
и сделать
>>> from django.contrib.auth.models import User
>>> from bookmarks.models import *
>>> user = User.objects.get(id=1)
>>> user
<User: ayman>
>>> user.username
u'ayman'
, как вы можете видеть, имя пользователя ayman
существует. Теперь вернемся к URL-адресам и просмотру user_page
. В моем веб-браузере, я пошел в
127.0.0.1/user/ayman/
urls.py
должен захватить ayman
и передать его в качестве параметра user_page
, верно? Он делает, но вид user_page
продолжает поднимать ошибку 404, и он говорит ayman not found
. Таким образом, параметр username
в user_page
фактически ayman
но он продолжает проваливать
user = User.objects.get(username=username)
даже если ayman
это имя пользователя в моей базе данных. Любая идея почему?
Вы используете голую 'except'. Если вы измените это на 'except User.DoesNotExist:', вы получите трассировку? – sk1p
@ sk1p дает имяError at/user/ayman/и говорит, что глобальное имя «Пользователь» не определено. – user2817200
Тогда вам нужно сделать 'из django.contrib.auth.models import User' –