подключение MySQL Джанго завершить простую функцию входа в систему


    
Функция Log
    1. маршрутов доступа , если не будут автоматически перенаправлены внутренний слэш слэш маршруты
    
    
    
все HTML - файлы , написанные в шаблонах по умолчанию папку

все статические файлы (CSS, JS, передний конец третьего сторонних библиотек) являются по умолчанию папка на статическом

введении режима HTML страницы внешних ресурсов
    ТПС
    локального
    

статического файла конфигурации
STATIC_URL = «/ статические /»
# статические профилирование
STATICFILES_DIRS = [
    os.path.join (base_dir, «статический»)
]
# может быть открыта наружу сервер доступа к статической папке ниже всех ресурсов


STATIC_URL = «/ ххх /» # префикс с именем интерфейса ваших статических папок не имеет ничего общего
# префикс имени папки по умолчанию , как в случае статических файлов! ! !
# Настройка статических файлов
STATICFILES_DIRS = [
    os.path.join (base_dir, 'статический'), # Ваш статический путь к папке
    os.path.join (base_dir, 'static1'),
    os.path.join (base_dir " static2 «)
]
# PS: найти слово будет сопровождаться списком всех статических файлов , чтобы найти путь , чтобы остановить немедленно возвратить 404 не найден



вид формы представления данных для запуска действий в двух направлениях
    <Вход типа = «Передать»>
    <Кнопка> </ Кнопка>

Как обратиться к представлению данных формы и способа , указанное
    Действие свойство управляет адресом , представленный
    на:
        1. полного пути
            <форма действие = «http://127.0.0.1: 8000 / Войти / «>
        2. запись только путь суффикс
            <форма Action =» / Войти / «>
        3. не пишите (представление по умолчанию для текущего пути)
    сформировать запрос по умолчанию формы получает
    
    
    отличаются выполнять различные логические пути для запроса клиента Код
    DEF Логин (запрос):
        запрос # приобретение , представленный в режиме UE
        печати (request.method) метод # запрос , чтобы получить всю строку в верхний регистр
        IF request.method == «ГЭТ»:
            возвращение рендер (запрос «Логин .html ')
        Элиф request.method ==' POST «:
            вернуть HttpResponse ( "брат получил")
    
    Личные консультации в соответствии со следующим написано таким образом , уменьшить избыточность кода и путаницы структурных проблем
    Вход DEF (запрос):
        IF request.method == 'СТОЛБ':
            вернуть HttpResponse ( 'ОК')
        вернуть рендер (запрос 'login.html')
    
    
    DEF Логин (Request):
    запрос # приобретение , представленный в режиме UE
    печати ( request.method) тип запроса # прибудете все прописные строка
    # IF request.method == 'ГЭТ':
    # вернуть запрос рендер (, 'The login.html')
    # Элиф request.method == 'POST' в:
    # возвращение HttpResponse ( «получил брата»)
    IF request.method == «POST»:
        Печать (request.POST) # вы Думайте об этом как большой словарь , который удерживал все данные , представленные клиентом после
        # request.POST : <QueryDict: { 'имя пользователя': [ 'Jason'], 'пароль': [ '123']}>
        Print (request.POST.get ( 'имя пользователя «)) # значение, хотя список, но получить значение, когда он должен получить отдельные элементы
        Значение по умолчанию # занимает только последний элемент из списка , который
        # request.POST:<QueryDict: { 'имя пользователя': [ 'Jason', 'Эгон'], 'пароль': [ '123']}>
        Print (Request. POST.getlist ( «имя пользователя»)) # Чтобы получить значение одноразовую внутри списка всех данных , необходимых GetList ()
        # [ «Jason», «Эгон»]
        Print (request.POST [ «пароль»]) не рекомендуется # с помощью этого метода для получения данных
        возврата HttpResponse ( «КИ»)
    вернуть визуализации (запроса, «login.html») ,
    
    чтобы получить список значения внутри всех элементов нужно использовать GetList сценариев: данные пользователя привилегированных флажки
    получить только добраться до значения списка последний элемент
    
    
    
    печати ( `` request.GET``) # <QueryDict: { 'имя пользователя': [ 'Jason'], 'пароль': [ '123']}>
    request.GET.get ( 'User')  
    # <QueryDict: { 'имя пользователя': [ 'Джейсон '' Эгон '],' пароль ': [' 123 ']}>
    request.GET.getlist (' «имя пользователя)
    
    
    
    подключение к базе данных Django
install_as_MySQLdb () # Скажите Джанго заменены pymysql соединения с базой данных MySQLdb Что такое ORM?     Объектно-реляционное отображение         класса «» «Таблица











    



        



    




        Объект «» «запись таблицы
        свойств объекта.» «» Значение поля в соответствующем записи
    

Джанго ORM автоматически не поможет вам создать библиотеку, но может помочь вам автоматически создать таблицу

Совет: проект Джанго на использовании библиотеки, не более проект Джанго использует библиотеку






миграцию базы данных (синхронно) команды (******)
python3 manage.py makemigrations ваших изменения базы данных на небольшой ноутбук , чтобы записать (и не помогут вам создать таблицу)
python3 manage.py в Перенести ваши изменения базы данных в базе данных синхронизации





новых данных
# вставки таблицы базы данных пользователей операции с данными
режима # 1:.
USER_OBJ = models.User.objects.create (имя = имя пользователя, пароль = пароль)
# режим 2:
USER_OBJ = Модели. пользователь (имя = имя пользователя, пароль = пароль)
user_obj.save () # вызов метода сохранения для сохранения объектов в базу данных


запроса данных
 
user_list = models.User.objects.all () # получить все пользовательские данные таблицы
# QuerySet до тех пор , как вы можете указать Просмотр запрос для получения внутреннего оператора SQL текущего объекта QuerySet в
печати (user_list.query)



Используйте тег HREF HREF атрибут задает путь к странице прыжка можно записать , но рекомендуется , чтобы писать полный путь суффикс
<a href="/reg/" class="btn btn-success"> добавить данные </a>
# Примечание путь написание должно слэш

редирект может написать чужой веб - сайт может быть ваш путь к
возвращать редирект ( «/ UserList»)
возвращение перенаправлении ( «/ UserList /»)



объект QuerySet поддерживает значение индекса не рекомендуется использовать рекомендуемое использование Он приходит .first () , чтобы помочь вам получить первые данные


удалить
models.User.objects.filter (ID = 1) .delete ( ) # QuerySet будут удалены все объекты данных всех




запросов данных , следует отметить, что вы получите в конце концов , это QuerySet или объект данных
USER_QUERY = models.User.objects.filter (ID = edit_id) .first () # Если вы первый , чтобы получить данные объекты не забудьте
случай # фильтра , когда условия не существует возвращает пустой целевой QuerySet
<QuerySet , что []> <класс 'django.db.models.query.QuerySet'>

USER_OBJ = models.User.objects.получить (ID = edit_id) # может быть непосредственно использован , чтобы получить сам объект данных , но в случае отсутствия запроса заданного непосредственно




редактирования
редактирования идентификатора цели способа получения
Варианта 1: ввод с использованием скрытого тега
<Тип входного = "скрытые" Имя = "edit_id" значение = "{{user_obj.pk}}">
Режим 2:
"? / Редактировать / edit_id user_obj.pk = {{}}" <форма Действие = Метод = «POST «>

Примечание: QuerySet модифицированная целевая точка Удаление всех данных внутри мишени объекты , подобные операции пакетного
режима 1:.
models.User.objects.filter (ID = edit_id) .update (имя = имя пользователя, пароль = пароль)
вариант 2 : получить текущий объект данных
USER_OBJ = models.User.objects.filter (указанное выше ID = edit_id) .first ()
user_obj.name = имя пользователя
user_obj.save ()



все модификации данных внутри модели слоя , связанного с таблицей, до тех пор , как вы изменить необходимо повторно запустить перенос базы данных команды
питон manage.py makemigrations , записанный на книгах небольшого
питона manage.py мигрировать реальные оперативную базу данных

рекомендация

отwww.cnblogs.com/tuanzibuku/p/10994409.html