2017-08-04 11 views
0

私はObeythetestinggoat.com(Win7、Django 1.11、Python 3.6.1)のチュートリアルに従っており、手動でローカルサイトにアクセスしようとするといくつかの問題が発生します。窓はError during template renderingDjango: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 %}から来ていると信じてテンプレートに挿入します。しかし、いくつかのことが奇妙に見えます。

  1. 私の機能テストはすべて問題なく終了しました。

  2. {% messages %}に問題はありませんでした。申し訳ありませんが はこれらを知っています{% things %}が呼び出されます。

  3. 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) 

答えて

0

あなたは経由makemigrationとmigrateコマンドを実行したことがありますPythonコンソール?私はあなたのモデルの変更がまだあなたのデータベースに移入されていないと推測します。

$ python manage.py makemigrations your_app_label 

次にあなたが読んhttps://docs.djangoproject.com/en/1.11/topics/migrations/

+0

こちらよりでき

$ python manage.py migrate 

を実行いや、私は両方を試してみたのだが、accounts''」にしていることを検出した変更はなし '存在しない 'と言います適用する移行 – user1964692

関連する問題