Error no such table users перевод

Я пытаюсь использовать аутентификацию Django по умолчанию для обработки регистрации и входа. И я думаю, что процедура довольно стандартная, но моя с sth неправильная.

Я пытаюсь использовать аутентификацию Django по умолчанию для обработки регистрации и входа. И я думаю, что процедура довольно стандартная, но моя с sth неправильная.

мой setting.py:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'books',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

AUTH_USER_MODEL = 'books.User'

мой books.models.py:

class User(AbstractUser):
    account_balance = models.DecimalField(max_digits=5, decimal_places=2, default=0)

мой views.py:

from django.contrib.auth.forms import UserCreationForm

def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            new_user = form.save()
            return HttpResponseRedirect("/accounts/profile/")
    else:
        form = UserCreationForm()
    return render(request, "registration/register.html", {'form': form,})

мой urls.py

urlpatterns = patterns('',
    (r'^accounts/login/$', login),
    (r'^accounts/logout/$', logout),
    (r'^accounts/profile/$', profile),
    (r'^accounts/register/$', register),
)

даже я попытался удалить db.sqlite3 и re python manage.py syncdb, там еще это сообщение об ошибке:

OperationalError at /accounts/register/
no such table: auth_user
Request Method: POST
Request URL:    http://127.0.0.1:8000/accounts/register/
Django Version: 1.7b4
Exception Type: OperationalError
Exception Value:    
no such table: auth_user

может кто-нибудь объяснить и рассказать мне, что я должен делать?

11 ответов


обновление

вы, вероятно, получаете эту ошибку, потому что вы используете UserCreationForm modelform, в котором в META содержит User(Джанго.ВНО.автор.модели > пользователь) как модель.

class Meta:
    model = User
    fields = ("username",)

и здесь вы используете свою собственную модель auth, поэтому таблицы, связанные с User не был создан. Так вот вы должны использовать свой собственный modelform. где в мета-классе модель должна быть вашей User(книги.Пользователь) модель


./manage.py migrate

Если вы только что включили все промежуточные программы и т. д., это запустит каждую миграцию и добавит отсутствующие таблицы.


Это кажется очень элементарным, но вы инициализировали таблицы командой

manage.py syncdb

Это позволяет назначить «суперпользователя», а также инициализировать любые таблицы.


единственное, что вам нужно сделать, это :

python manage.py migrate

и после этого:

python manage.py createsuperuser

после чего вы можете выбрать имя пользователя и пароль.

вот пример вывода:

Username (leave blank to use 'hp'): admin
Email address: xyz@gmail.com
Password:
Password (again):
Superuser created successfully.

при использовании пользовательской модели аутентификации в подклассе UserCreationForm вам придется переопределить метод metaclass и clean_username, поскольку он ссылается на жестко закодированный класс пользователя (последний только до django 1.8).

class Meta(UserCreationForm.Meta):
        model = get_user_model()

    def clean_username(self):
        username = self.cleaned_data['username']

        try:
            self.Meta.model.objects.get(username=username)
        except self.Meta.model.DoesNotExist:
            return username

        raise forms.ValidationError(
            self.error_messages['duplicate_username'],
            code='duplicate_username',
        )

python manage.py затем makemigrations → python manage.py migrate фиксирует его.

предполагая, что приложения определены/установлены в settings.py существует в каталоге проекта.


просто сделайте следующий поток

$ django-admin createproject <your project name>

под <your project dict> тип django-admin createapp <app name>

под <app name>/admin.py

from django.contrib import admin
from .models import Post
admin.site.register(Post)

перейдите к корневому проекту. Тогда $python manage.py migrate

затем он запрашивает имя пользователя и пароль

1

автор: Karthick Sakkaravarthi


Я также столкнулся с той же проблемой «нет такой таблицы: auth_user», когда я пытаюсь развернуть мой сайт Django в виртуальное окружение.

вот мое решение, которое сработало в моем случае:

в вашем settings.py файл, в котором вы определили свой параметр базы данных следующим образом:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',

        'NAME': os.path.join(os.getcwd(), 'db.sqlite3'),
     }
 }  

просто найдите свою БД.база данных sqlite3 или любая другая база данных, которую вы используете, и запишите полный путь к вашей базе данных , поэтому теперь параметр базы данных будет выглядеть что-то вроде этого ;

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': '/home/django/django_project/db.sqlite3',
    }
}  

Я надеюсь, что ваша проблема будет решена сейчас.


перед созданием пользовательской модели пользователя необходимо выполнить первую миграцию. Затем установите приложение вашей модели пользователя и добавьте AUTH_USER_MODEL.

а также:

class UserForm(UserCreationForm):

    class Meta:
        model = User
        fields = ("username",)

и

python manage.py migrate auth
python manage.py migrate

пожалуйста, проверьте, сколько экземпляров python работают в фоновом режиме, как в windows go- — — >диспетчер задач и проверить экземпляры python и убить или завершить задачу i.e убить все экземпляры python. запустите снова, используя «py manage.py команда «runserver».
надеюсь, все будет хорошо….



Skip to forum content

My Visual Database

A Simple Solution for Creating Databases

You are not logged in. Please login or register.

Active topics Unanswered topics

Pages 1

You must login or register to post a reply

1 2015-01-12 12:10:12

  • iliasidash
  • Member
  • Offline
  • Registered: 2015-01-09
  • Posts: 14

Topic: No such table

В чем может быть причина… При запуске программы выдает «No such table «Название таблицы». Таблица есть ссылки все проверил, не могу понять в чем дело!

2 Reply by iliasidash 2015-01-12 12:12:38

  • iliasidash
  • Member
  • Offline
  • Registered: 2015-01-09
  • Posts: 14

Re: No such table

Добрый день!!!!
Забылся немного))))

3 Reply by DriveSoft 2015-01-12 12:16:21

  • DriveSoft
  • DriveSoft
  • Administrator
  • Offline
  • Registered: 2014-02-14
  • Posts: 10,294

Re: No such table

В текущей версии при изменении структуры БД, необходимо пересоздавать базу данных, при этом все данные в ней теряются.

После того, как вы изменили структуру существующей БД (например добавили новую таблицу), и запустили проект, Вы должны были получить сообщение:

Структура базы данных была изменена.
Вы желаете пересоздать базу данных?
—————————
Yes   No   
—————————

Скорей всего вы ответили No, и структура базы данных фактически не была изменена (в файле sqlite.db)
Просто удалите файл базы данных в папке с проектом sqlite.db и при запуске проекта БД будет пересоздана правильно.

В последней бета версии 1.48 эта проблема почти решена
— Реализована возможность создания новых полей в БД без потери данных (08.01.2015)
— Реализована возможность создания и удаления таблиц в БД без потери данных (09.01.2015)
— Реализована возможность удаления полей из таблиц БД без потери данных (10.01.2015)
Осталось реализовать возможность переименования полей и таблиц без потери данных в БД.

Скачать бета версию 1.48 можете здесь
http://myvisualdatabase.com/forum/viewtopic.php?id=781

Dmitry.

4 Reply by Leonid 2015-01-12 14:33:12

  • Leonid
  • Member
  • Offline
  • Registered: 2014-07-11
  • Posts: 99

Re: No such table

Уже попробовал ! Здорово ! Спасибо !

5 Reply by iliasidash 2015-01-12 15:44:16

  • iliasidash
  • Member
  • Offline
  • Registered: 2015-01-09
  • Posts: 14

Re: No such table

Большое спасибо!

Posts: 5

Pages 1

You must login or register to post a reply

hope someone can help. I am trying to access my database from a Dynamic Web project in Eclipse. For some reason I keep receiving the following error:

[SQLITE_ERROR] SQL error or missing database (no such table: users)

There definitely is a table called ‘users’ in the books database. I think it could be to do with where I am saving the the database since I know the code I’ve used works fine because I have used it in another part of my project. Screen shot below to show where things are saved. My database is in both the main directory and the web inf directory because my main program needs access to it as well as the server.

enter image description here

My code:

public class Authentication {

    private static Connection getDBConnection() {

        Connection conn = null;

        try {
            Class.forName("org.sqlite.JDBC");
        } catch (ClassNotFoundException e) {
            System.out.println(e.getMessage());
        }

        try {
            String url = "jdbc:sqlite:books.sqlite";
            //Gets connection with the JDBC API
            conn = DriverManager.getConnection(url);
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }

        return conn;
    }

    public String authenticate(String username, String password) throws SQLException {

        // TODO maybe removed this line below or change it. 

                Statement statement = null;
                Connection conn = null;
                ResultSet results = null;
                HashMap<String,String> userPass = new HashMap<String,String>();

                // Creates SQL query and adds it to String variable.
                String query = "SELECT username, password FROM users";
                // TODO Maybe remove the below line, not necessary?
                // Book temp = null;

                try {                       
                    conn = getDBConnection();   
                    statement = conn.createStatement();                     
                    results = statement.executeQuery(query);                    
                    while (results.next()) {                        
                        String Username = results.getString("username");
                        String Password = results.getString("password");                            
                        userPass.put(Username, Password);
                    }
                } finally {
                    if (results != null)
                        results.close();
                    if (statement != null)
                        statement.close();
                    if (conn != null)
                        conn.close();
                }
                //Returns to newly created bookList to where the method was called.

                if (userPass.get(username)== password ) {
                    return "success";
                }
                else {
                    return "error";
                }               
    }
}

hope someone can help. I am trying to access my database from a Dynamic Web project in Eclipse. For some reason I keep receiving the following error:

[SQLITE_ERROR] SQL error or missing database (no such table: users)

There definitely is a table called ‘users’ in the books database. I think it could be to do with where I am saving the the database since I know the code I’ve used works fine because I have used it in another part of my project. Screen shot below to show where things are saved. My database is in both the main directory and the web inf directory because my main program needs access to it as well as the server.

enter image description here

My code:

public class Authentication {

    private static Connection getDBConnection() {

        Connection conn = null;

        try {
            Class.forName("org.sqlite.JDBC");
        } catch (ClassNotFoundException e) {
            System.out.println(e.getMessage());
        }

        try {
            String url = "jdbc:sqlite:books.sqlite";
            //Gets connection with the JDBC API
            conn = DriverManager.getConnection(url);
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }

        return conn;
    }

    public String authenticate(String username, String password) throws SQLException {

        // TODO maybe removed this line below or change it. 

                Statement statement = null;
                Connection conn = null;
                ResultSet results = null;
                HashMap<String,String> userPass = new HashMap<String,String>();

                // Creates SQL query and adds it to String variable.
                String query = "SELECT username, password FROM users";
                // TODO Maybe remove the below line, not necessary?
                // Book temp = null;

                try {                       
                    conn = getDBConnection();   
                    statement = conn.createStatement();                     
                    results = statement.executeQuery(query);                    
                    while (results.next()) {                        
                        String Username = results.getString("username");
                        String Password = results.getString("password");                            
                        userPass.put(Username, Password);
                    }
                } finally {
                    if (results != null)
                        results.close();
                    if (statement != null)
                        statement.close();
                    if (conn != null)
                        conn.close();
                }
                //Returns to newly created bookList to where the method was called.

                if (userPass.get(username)== password ) {
                    return "success";
                }
                else {
                    return "error";
                }               
    }
}

Понравилась статья? Поделить с друзьями:
  • Error not accessible очередь печати
  • Error no such partition win xp
  • Error not accessible zebra zd410 ошибка
  • Error no such partition grub rescue что делать
  • Error no such partition entering rescue mode что делать