admin管理员组文章数量:1663648
写在前面:
今年五一不知道干什么打算学习一下django
试着写一个网页记事本
在这里记录一下,第一次弄有很多不足,欢迎大家指出错误!
完成后的样子网址:http://39.105.98.109:8080/
2021/06/25
重新更新了资源地址
终于在12点之前写好了注册登陆
完整工程(笔记功能实现)
链接:https://pan.baidu/s/19hYfzYS9dQLmGTMLB7Py3w
提取码:prrq
链接:https://pan.baidu/s/1YlwoV4_leyL7jQi7SODHCg
提取码:rbg3
CSDN资源地址:https://download.csdn/download/qq_40719787/19820742
搭建基本的工程
官网的教程: https://docs.djangoproject/en/2.2/intro/tutorial01/
比较好的中文教程:https://www.runoob/django/django-install.html
我的项目目录结构
static静态资源文件夹
view试图(HTML页面)
如何创建这些我就不写可以参考上两个教程
2021/06/25增加
运行项目之前请确保 已安装Python、Django 、已创建数据库(具体命令如下)
在工程目录下(有manage.py
那一层通过命令行输入指令)
Django 安装命令pip install Django
Django 创建项目命令django-admin startproject mysite(项目名称)
Django 创建数据库命令python manage.py migrate
Django 运行项目命令py manage.py runserver
配置url
对于一个简单的注册登陆功能,需要的接口有获取登陆页面,注册页面,登陆,注册,退出
需要注意的是在配置path的时候加 / 的是用于GET请求的,而POST请求是没有的
from django.contrib import admin
from django.urls import path
from . import control
urlpatterns = [
path('', control.index),
path('admin/', admin.site.urls),
path('login/', control.signin),
path('loginAction/', control.signinAction),
path('logoutAction/', control.logoutAction),
path('register/', control.register),
path('registerAction', control.registerAction)
]
配置control(view)
这里和官方的命名有点不大一样官网用的是(view)
接口写完我们需要实现这些接口
# 导入相关的包
from django.http import HttpResponse
from django.shortcuts import render,redirect
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.models import User
默认情况下进来到达的是首页,而登陆成功也需要返回首页,所以这里需要一个是否登陆的验证
# 返回首页
def index(request):
if request.user.is_authenticated:
return HttpResponse('您已登录')
else:
return render(request, 'index.html')
登陆,注册,注销的实现
# 登陆页面
def signin(request):
return render(request, 'login.html')
# 登陆
def signinAction(request):
username = request.GET['username']
password = request.GET['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect("/")
else:
return HttpResponse("密码不正确")
# 注销
def logoutAction(request):
logout(request)
return redirect("/")
# 返回注册页面
def register(request):
return render(request, 'register.html')
# 注册
def registerAction(request):
username = request.POST['username']
password = request.POST['password']
person = User.objects.filter(username=username)
if any(person):
return HttpResponse("您输入的用户名已存在!")
user = User.objects.create_user(username, '', password)
user.save()
return HttpResponse("注册成功!")
获取GET方式传递的数据: username = request.GET[‘username’]
获取POST方式传递的数据:username = request.POST[‘username’]
配置静态资源路径
不配置静态路径前端页面无法加载CSS等静态文件
配置方法:
找到settings.py在最下面添加
'/static/'是静态资源的路径
STATIC_URL = '/static/'
# 设置静态文件路径
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
'/static/',
]
HTML页面中引用静态资源方式
不推荐使用 他会在页面相互跳转时无法找到正确的路径
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'bootstrap\css\bootstrap.min.css' %}">
这里写一下前端的内容:
需要登陆,首页,和注册三个页面,在如同文件夹创建就可以了,具体代码我这里就不放了,可以下载源代码
简单说一下Ajax传递数据(POST)
Ajax传递数据(POST)
由于 django 的安全机制,普通的Ajax(POST)请求是会被拦截的
官网的Ajax文档:https://docs.djangoproject/en/2.2/ref/csrf/
所以在进行Ajax请求的时候需要在AJAX请求上设置令牌
{% csrf_token %} 是必须的
补充一下,在Ajax请求时配置
POST请求时 path(‘register’, control.register)这里是不需要“/”的
GET请求时 path(‘register/’, control.register)需要添加斜杠
{% csrf_token %}
<script type="text/javascript">
//创建令牌
var csrftoken = jQuery("[name=csrfmiddlewaretoken]").val();
console.log(csrftoken);
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
};
$.ajax({
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
},
url:'/register',
// dataType:'text',
type:'POST',
data:{
username:"nihaoshijie",
password:"123456"
},
success:function(data){
console.log(data);
}
})
</script>
版权声明:本文标题:django入门(一)实现注册登录 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1730001829a1218867.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论