前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django1.11 简单登录注册

Django1.11 简单登录注册

作者头像
治电小白菜
发布2020-08-25 11:29:04
4350
发布2020-08-25 11:29:04
举报
文章被收录于专栏:技术综合

百度的教程都是坑,还是要靠自己,,, 代码地址:https://github.com/klren0312/Django_login_register

1. 安装django 1.11

代码语言:javascript
复制
pip install django

2.安装pymysql

我是Python3.5,所以必须用pymysql

代码语言:javascript
复制
pip install pymysql

3.用PyCharm新建项目

项目名为finally,用python manage.py startapp mysite新建名为mysite的app。 用python manage.py createsuperuser创建后台用户。 具体目录结构

目录.jpg

记得要在setting.py中配置app

代码语言:javascript
复制
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'mysite',
]

4.配置数据库为mysql

注意设置语言和时区,我时区没设置,发现最后自动填充到数据库的时间不是中国时间

代码语言:javascript
复制
文件路径 finally/settings.py

TIME_ZONE = 'Asia/Shanghai'
USE_TZ = False

配置MySQL数据库

代码语言:javascript
复制
文件路径 finally/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':  'django',//数据库名
        'USER':'root',//mysql用户名
        'PASSWORD':'root',//mysql密码
        'HOST':'127.0.0.1',
        'PORT':'3306'
    }
}

还要引入包

代码语言:javascript
复制
文件路径 finally/__init__.py

import pymysql
pymysql.install_as_MySQLdb()

5.数据表生成

Django 1.7以上 要用两句话来同步数据库

代码语言:javascript
复制
python manage.py makemigrations
python manage.py migrate
代码语言:javascript
复制
文件路径:mysite/models.py

from django.db import models

class User(models.Model):
    username = models.CharField(max_length=50)
    password = models.CharField(max_length=50)
    email = models.EmailField()

6.视图配置

  • 就是一些登录注册的路由,此处我关了csrf(具体可以在下面的相关问题解决处查看)
  • 很无奈,很多教程还在用render_to_response,但是我查了资料。render()方法是render_to_response的一个崭新的快捷方式,前者会自动使用RequestContext。而后者必须coding出来,这是最明显的区别,当然前者更简洁。
代码语言:javascript
复制
文件路径:mysite/views.py

from django.shortcuts import render
from django.http import HttpResponse
from mysite.models import User
from django.views.decorators.csrf import csrf_exempt
 
   #注册
@csrf_exempt
def regist(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        email = request.POST['email']
        #此处遇坑
        k = User.objects.create(username=username,password=password,email=email)
        k.save()
        return HttpResponse('regist success!!!')
    else:
        return render(request, 'regist.html')
    return render(request, 'regist.html')

 #登录
@csrf_exempt
def login(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = User.objects.filter(username__exact=username,password__exact=password)
        if user:
            return render(request,"index.html")
        else:
            return HttpResponse('用户密码错误,请再次登录')
    else:
        return render(request,"login.html")
    return render(request,"login.html")

 #首页
def index(request):
    return render(request,"index.html")

7.配置urls路径

代码语言:javascript
复制
文件路径:finally/urls.py

from django.conf.urls import url
from django.contrib import admin
from mysite import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^regist/$',views.regist),
    url(r'^index/$',views.index),
    url(r'^login/$',views.login),
]

8.相关页面

没意思的部分

代码语言:javascript
复制
文件路径:templates/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        html,body{
            text-align: center;
            margin: 0px auto;
        }
    </style>
</head>
<body>
    <h1>主界面</h1>
</body>
</html>
代码语言:javascript
复制
文件路径:templates/regist.html

<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>regist</title>

    <style>
        html,body{
            text-align: center;
            margin: 0px auto;
        }
    </style>
</head>
<body>
    <h1>注册界面</h1>
    <form method="post" action="http://127.0.0.1:8000/regist/" enctype="multipart/form-data">
        <label for="username">username:</label>
        <input type="text" name="username" id="username">
        <label for="password">password:</label>
        <input type="password" name="password" id="password">
        <label for="email">email:</label>
        <input type="email" name="email" id="email">
        <input type="submit" value="Regist">
    </form>
</body>
</html>
代码语言:javascript
复制
文件路径:templates/login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        html,body{
            text-align: center;
            margin: 0px auto;
        }
    </style>
</head>
<body>
    <h1>登录页面</h1>
    <form method="post" action="http://127.0.0.1:8000/login/">
        <label for="username">username:</label>
        <input type="text" name="username" id="username">
        <label for="password">password:</label>
        <input type="password" name="password" id="password">
        <input type="submit" value="Login">
    </form>
</body>
</html>

9.运行结果

注册页面.jpg

注册成功.jpg

数据库.jpg

10.遇到的问题

  • 报错save() missing 1 required positional argument: 'self'

原代码

代码语言:javascript
复制
        User.objects.create(username=username,password=password,email=email)
        User.save()

改后代码

代码语言:javascript
复制
        k = User.objects.create(username=username,password=password,email=email)
        k.save()
  • 2[CSRF token missing or incorrect]

我很无奈,直接禁用。 在views.py中引入包

代码语言:javascript
复制
from django.views.decorators.csrf import csrf_exempt

在函数上面加@csrf_exempt

@治电小白菜20170518

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装django 1.11
  • 2.安装pymysql
  • 3.用PyCharm新建项目
  • 4.配置数据库为mysql
  • 5.数据表生成
  • 6.视图配置
  • 7.配置urls路径
  • 8.相关页面
  • 9.运行结果
  • 10.遇到的问题
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档