私はObeythetestinggoat.com(Win7、Django 1.11、Python 3.6.1)のチュートリアルに従っており、手動でローカルサイトにアクセスしようとするといくつかの問題が発生します。窓はError during template rendering
Django:htmlテンプレートと "そのようなテーブルがありません"
がここにありましたが、それはテンプレートの抜粋であることを述べているブラウザで
django.db.utils.OperationalError: no such table: accounts_user
出力:私はChromeブラウザウィンドウでpython manage.py runserver
と開口部localhost:8000
を実行すると、私は次のエラーを取得しますレンダリングしようとしている:
<div class="container">
<nav class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<a class="navbar-brand" href="/">Superlists</a>
{% if user.email %}
<ul class="nav navbar-nav navbar-right">
<li class="navbar-text">Logged in as {{ user.email }}</li>
<li><a href="#">Log out</a></li>
</ul>
{% else %}
<form class="navbar-form navbar-right"
method="POST"
action="{% url 'send_login_email' %}">
<span>Enter email to log in:</span>
<input class="form-control" name="email" type="text"/>
{% csrf_token %}
</form>
{% endif %}
</div>
</nav>
{% if messages %}
<div class="row">
<div class="col-md-8">
{% for message in messages %}
{% if message.level_tag == 'success' %}
<div class="alert alert-success">{{ message }}</div>
{% else %}
<div class="alert alert-warning">{{ message }}</div>
{% endif %}
{% endfor %}
</div>
</div>
{% endif %}
</div>
私は、私はそれらを追加するまで、これらの特定のエラーが出てくるしなかったため、問題が{% user.email %}
から来ていると信じてテンプレートに挿入します。しかし、いくつかのことが奇妙に見えます。
私の機能テストはすべて問題なく終了しました。
{% messages %}
に問題はありませんでした。申し訳ありませんが はこれらを知っています{% things %}
が呼び出されます。makemigrations
およびmigrate
は役に立ちません。ここで
accounts
アプリのviews.py
です:
from django.shortcuts import redirect
from django.contrib import auth, messages
from django.core.mail import send_mail
from django.core.urlresolvers import reverse
from accounts.models import Token
def send_login_email(request):
email = request.POST['email']
token = Token.objects.create(email=email)
url = request.build_absolute_uri(
reverse('login') + '?token=' + str(token.uid)
)
message_body = f'Use this link to log in:\n\n{url}'
send_mail(
'your login link for Superlists',
message_body,
'[email protected]',
[email]
)
messages.success(
request,
"Check your email, we've sent you a link you can use to log in.")
return redirect('/')
def login(request):
user = auth.authenticate(uid=request.GET.get('token'))
if user:
auth.login(request, user)
return redirect('/')
、ここでは、accounts
アプリのmodels.py
です:
from django.contrib import auth
from django.db import models
import uuid
auth.signals.user_logged_in.disconnect(auth.models.update_last_login)
class User(models.Model):
email = models.EmailField(primary_key=True)
REQUIRED_FIELDS = []
USERNAME_FIELD = 'email'
is_anonymous = False
is_authenticated = True
class Token(models.Model):
email = models.EmailField()
uid = models.CharField(default=uuid.uuid4, max_length=40)
こちらよりでき
を実行いや、私は両方を試してみたのだが、accounts''」にしていることを検出した変更はなし '存在しない 'と言います適用する移行 – user1964692