当我尝试按照本教程中的步骤进行操作时:
>>> # on the other hand we should expect to find something at '/polls/'
>>> # we'll use 'reverse()' rather than a hardcoded URL
>>> from django.urls import reverse
>>> response = client.get(reverse('polls:index'))
我得到答复:
django.db.utils.OperationalError: (1045, "Access denied for user 'Django'@'localhost' (using password: Yes)")
我正在使用WAMP Server 3.1.7,Python 3.7.2和Django 2.1.7。
(本教程位于this link,如果需要我在本文中未提供的任何背景信息。)
在我的settings.py文件中,这是我来自DATABASES段的摘录:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'lab',
'USER': 'Django',
'PASSWORD': 'MYPASS',
'HOST': 'localhost',
'PORT': '3306',
}
}
我尝试过更改用户,但是这似乎不是从中拉出用户的位置,因为我仍然遇到与“ Django” @ ...而不是“ ChangedUser” @相同的错误。就像我预期的那样。
我可以使用以下命令通过命令提示符登录mysql:
mysql -u Django -p
Enter password: MYPASS
使用这种方法,我可以顺利登录。
我还尝试使用root登录并使用以下方式授予数据库中用户Django的所有权限:
GRANT ALL ON my_db.* TO 'Django'@'localhost';
我得到响应Query OK,受影响的0行。
当我尝试创建用户Django时,以防万一它不存在,请使用:
CREATE USER 'Django'@'localhost' IDENTIFIED BY 'MYPASS'
我收到错误消息“ ERROR 1396(HY000):'Django'@ localhost'的CREATE USER操作失败
目前我有多个文件,太多了,无法合理地放在这里。 this tutorial的各个步骤中列出了所有文件及其代码。
在我看来,以下是最相关的摘要:
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'lab',
'USER': 'Django',
'PASSWORD': 'MYPASS',
'HOST': 'localhost',
'PORT': '3306',
}
}
polls.py
{% if latest_question_list %}
<ul>
{% for question in latest_question_list %}
<li><a href="{% url 'polls:detail' question.id %}">{{question.question_text }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
除代码外,最有用的东西可能是文件夹结构:
mysite
mysite
__pycache__
__init__.py
settings.py
urls.py
wsgi.py
polls
__pycache__
migrations
__pycache__
__init__.py
0001_initial.py
0002_auto_20190322_0945.py
templates
polls
detail.html
index.html
results.html
__init__.py
admin.py
apps.py
models.py
tests.py
urls.py
views.py
db.sqlite3
manage.py
我可以根据要求提供其他任何东西。
预期结果:
没事
>>> response = client.get(reverse('polls:index'))
“ 200”
之后
>>> response.status_code
实际结果:
django.db.utils.OperationalError: (1045, "Access denied for user 'Django'@'localhost' (using password: Yes)")
之后
>>> response = client.get(reverse('polls:index'))