百度的教程都是坑,还是要靠自己,,, 代码地址:https://github.com/klren0312/Django_login_register
pip install django
我是Python3.5,所以必须用pymysql
pip install pymysql
项目名为finally,用
python manage.py startapp mysite
新建名为mysite的app。 用python manage.py createsuperuser
创建后台用户。 具体目录结构
目录.jpg
记得要在setting.py中配置app
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mysite',
]
注意设置语言和时区,我时区没设置,发现最后自动填充到数据库的时间不是中国时间
文件路径 finally/settings.py
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = False
配置MySQL数据库
文件路径 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'
}
}
还要引入包
文件路径 finally/__init__.py
import pymysql
pymysql.install_as_MySQLdb()
Django 1.7以上 要用两句话来同步数据库
python manage.py makemigrations
python manage.py migrate
文件路径: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()
文件路径: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")
文件路径: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),
]
没意思的部分
文件路径: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>
文件路径: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>
文件路径: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>
注册页面.jpg
注册成功.jpg
数据库.jpg
save() missing 1 required positional argument: 'self'
原代码
User.objects.create(username=username,password=password,email=email)
User.save()
改后代码
k = User.objects.create(username=username,password=password,email=email)
k.save()
[CSRF token missing or incorrect]
我很无奈,直接禁用。 在views.py中引入包
from django.views.decorators.csrf import csrf_exempt
在函数上面加@csrf_exempt
@治电小白菜20170518