实现简单的django项目,包含注册登录及后台管理的功能,符合MVC的思想

实现一个简单的django项目,包含注册登录及后台管理的功能,符合MVC的思想

1. 包含基本的登录注册功能及admin管理功能
2. 对django有个简单的了解

环境配置

1. python 3.7.1
2. django 2.2.7
3. windows环境、pycharm 编辑器

1.创建django项目HelloWorld

创建完成后,目录结构如下
在这里插入图片描述

2.创建应用(APP)

在控制台中输入python manage.py startapp myapp

python manage.py startapp myapp

执行成功后,会自动生成一个myapp的文件夹,目录结构如下
在这里插入图片描述

3.数据库配置

打开HelloWorld/settings.py配置文件,这是整个django项目的设置中心,找到DATABASES,默认配置的是SQLite数据库,无需安装任何应用就可以直接使用它

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

如果想使用mysql数据库的话,需要将配置改为下图所示的内容

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test', 
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

name是数据库名,其余的应该不用解释了吧
简单来说,你如果使用的是默认数据库的话,这一步可以跳过

4.模型

  1. 创建模型
    因为我们做的是登录和注册功能,最简单的用户模型可能就是只有用户名和密码了,在myapp/models.py文件中添加
from django.db import models

# Create your models here.

class User(models.Model):
   username = models.CharField(max_length=20)
   password = models.CharField(max_length=20)
  1. 启用模型
    上面创建模型的代码很少,但做的事情很多,django会自动创建该APP对应生成的数据库表结构
    不过,首先要把该APP加入到django项目中,在HelloWorld/settings.py文件中的INSTALLED_APPS添加’myapp’
INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
]
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp'
]

然后运行命令,

#检测模型文件的更改,保存为迁移文件0001
1. python manage.py makemigrations myapp
#查看即将执行的数据库命令
2. python manage.py sqlmigrate myapp 0001
#执行迁移,生成数据库结构
3. python manage.py migrate

提示下面这些就说明成功了,不同数据库的提示信息可能会有所不同

(venv) D:\forme\HelloWorld>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, myapp, 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 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 myapp.0001_initial... OK
  Applying sessions.0001_initial... OK
  1. 使用模型API
    在命令行中执行 python manage.py shell 进入python交互环境
python manage.py shell

在命令行中输入下列命令来写入一条数据

>>> from myapp.models import User
>>> q = User(username='user1',password='123456')
>>> q.save()
>>>> User.objects.all()
<QuerySet [<User: User object (1)>]>

这样数据库表就创建成功了

5.视图和模板

在myapp文件夹下创建一个templates文件夹来放html文件,因为我们只有注册和登录功能,所以只需要两个页面,文件结构如下
在这里插入图片描述
login.html

<h1>登录页面</h1>
    <form action="/login/" method="post">
     {% csrf_token %}
        <div>
      <input type="text" name="username" value="{{ username }}">
        </div>
      <input type="password" name="password" value="{{ password }}">
      <input type="submit" value="Login">
    </form>

register.html

<h1>注册页面</h1>
    <form action="/register/" method="post">
     {% csrf_token %}
      <div>
      <input type="text" name="username" value="{{ username }}">
      </div>
        <span>
      <input type="password" name="password" value="{{ password }}">
            </span>
      <input type="submit" value="Submit">
    </form>
    {{ status }}

在myapp/views.py中添加代码:

from django.shortcuts import render
from django.http import HttpResponse, Http404
from .models import User

# Create your views here.
def register(request):
    status = 'Success!'
    username = ''
    password = ''
    if request.POST:
        username = request.POST['username']
        password = request.POST['password']
        try:
            q = User(username=username,password=password)
            q.save()
        except:
            status = 'register error!'
        else:
            status = 'Success!'
    else:
        status = ''
    return render(request, 'myapp/register.html', {'status': status,'username':username,'password':password})


def login(request):
    if request.POST:
        username = request.POST['username']
        password = request.POST['password']
        result = User.objects.filter(username=username)
        try:
            for user in result:
                if user.password == password:
                    return HttpResponse("Welcome %s " % username)
        except:
            return Http404()
        return HttpResponse("It is not a user, %s" % username)
    return render(request,'myapp/login.html')

如何把视图和django项目连接起来呢,当然还是在HelloWorld/settings.py文件中了

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

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

至此,我们的登录注册功能就完成了
注册页面
在这里插入图片描述
登录页面
在这里插入图片描述

登录成功页面
在这里插入图片描述

6.admin后台管理

在浏览器中输入 http://127.0.0.1:8000/admin/,django默认配置了admin页面,我们要做的就是在admin中注册User模型,在myapp/admin.py文件中添加代码

from django.contrib import admin
from .models import User

# Register your models here.

admin.site.register(User)

这样我们的admin后台管理配置就完成了,不过要想进入admin页面需要先创建一个超级管理员用户,在命令行中输入python manage.py createsuperuser

(venv) D:\forme\HelloWorld>python manage.py createsuperuser
Username (leave blank to use 'administrator'): admin
Email address: #######@qq.com
Password:
Password (again):
The password is too similar to the username.
This password is too short. It must contain at least 8 characters.
This password is too common.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

这样就创建成功了,进入admin页面看一下
在这里插入图片描述
在这里插入图片描述
这样我们的后台管理功能也完成了
django自带的后台管理功能可以很方便的帮助我们进行增删查改功能

7.小结

  1. 本文算是第一步学习django的总结,还有很多细节没有讲到
  2. 再接再厉,尽快整理出下一篇学习文档
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值