60.Django小练习——实现注册登录界面

urls.py

from django.contrib import admin
from django.urls import path
from app_user import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', views.login),
    path('register/', views.reg),
]

app_user部分

modles.py

class User(models.Model):
    id = models.AutoField(primary_key=True,verbose_name='主键')
    username = models.CharField(max_length=32,verbose_name='用户名')
    password = models.CharField(verbose_name='密码',max_length=64)
    def __str__(self):
     return '%s'%self.username

views.py

from django.shortcuts import render,HttpResponse
from app_user import models


def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user_obj = models.User.objects.filter(username=username).first()
        if user_obj:
            if password == user_obj.password:
                return HttpResponse("登陆成功")
            else:
                return HttpResponse("密码错误")
        else:
            return HttpResponse("用户不存在")
    return render(request, 'login.html')


def reg(request):
    if request.method == "POST":
        username = request.POST.get('username')
        password = request.POST.get('password')
        user_obj = models.User(username=username,password=password)
        user_obj.save()  # 保存数据
    # 先给用户返回一个注册页面
    return render(request,'register.html'

login.html部分代码

            <form action="" method="post">
                <p>username:<input type="text" name="username" class="form-control"></p>
                <p>password:<input type="password" name="password" class="form-control"></p>
                <input type="submit" class="btn btn-success btn-block">
            </form>

register.html

<form action="" method="post">
                <p>username:<input type="text" name="username" class="form-control"></p>
                <p>password:<input type="password" name="password" class="form-control"></p>
                <input type="submit" class="btn btn-danger btn-block">
            </form>

makemigration

migrate

manage.py@d60 > makemigrations
bash -cl "/Users/chenfeng/PycharmProjects/d60/venv/bin/python /Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm/django_manage.py makemigrations /Users/chenfeng/PycharmProjects/d60"
Tracking file by folder pattern:  migrations
Migrations for 'app_user':
  app_user/migrations/0001_initial.py
    - Create model User

Following files were affected 
 /Users/chenfeng/PycharmProjects/d60/app_user/migrations/0001_initial.py
Process finished with exit code 0
manage.py@d60 > migrate
bash -cl "/Users/chenfeng/PycharmProjects/d60/venv/bin/python /Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm/django_manage.py migrate /Users/chenfeng/PycharmProjects/d60"
Tracking file by folder pattern:  migrations
Operations to perform:
  Apply all migrations: admin, app_user, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying app_user.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying sessions.0001_initial... OK

Process finished with exit code 0

然后migrations文件夹下出现0001_init.py文件

# Generated by Django 3.0.6 on 2020-05-25 07:43

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='User',
            fields=[
                ('id', models.AutoField(primary_key=True, serialize=False, verbose_name='主键')),
                ('username', models.CharField(max_length=32, verbose_name='用户名')),
                ('password', models.CharField(max_length=64, verbose_name='密码')),
            ],
        ),
    ]

测试结果

先注册一个 账号asd,密码123为例

在登录界面输入账号asd,密码123

返回登录成功

在登录页面输入

账号asd,密码随便输一个

返回密码错误

在登录界面随便输一个用户名和密码

返回用户不存在

 

后台信息反馈

django.db.utils.OperationalError: no such table: app_user_user
[25/May/2020 07:42:35] "POST /login/ HTTP/1.1" 500 126437
[25/May/2020 07:48:05] "POST /login/ HTTP/1.1" 200 15
[25/May/2020 07:48:10] "GET /login/ HTTP/1.1" 200 565
[25/May/2020 07:53:12] "GET /register/ HTTP/1.1" 200 603
[25/May/2020 07:53:34] "POST /register/ HTTP/1.1" 200 603
[25/May/2020 07:53:40] "GET /register/ HTTP/1.1" 200 603
[25/May/2020 07:53:43] "POST /login/ HTTP/1.1" 200 12
[25/May/2020 07:53:47] "GET /login/ HTTP/1.1" 200 565
[25/May/2020 07:54:06] "POST /login/ HTTP/1.1" 200 12
[25/May/2020 07:54:12] "GET /login/ HTTP/1.1" 200 565
[25/May/2020 07:54:18] "POST /login/ HTTP/1.1" 200 12
[25/May/2020 07:54:20] "GET /login/ HTTP/1.1" 200 565
[25/May/2020 07:54:26] "POST /login/ HTTP/1.1" 200 15

猜你喜欢

转载自www.cnblogs.com/heirenxilou/p/12957408.html