Django开发之引入html开发01
在我们利用Django开发的时候,没有前后端分离,都是引入静态资源html,然后绑定数据。那么来讲讲实际操作步骤:
1.将前端写好的css,images,js资源文件放到static,如果项目中没有这个资源文件当然要新建
选中资源文件放到static中
2.配置static,这是专门用来存放资源文件的路径,要配置和声明,记得是在项目的settings.py配置
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(os.path.join(BASE_DIR, 'static')),
)
2.由于我是初学者,我看的学习视频是2016年的,Django1.0,现在用的是Django2.0,有些用法已经过时或者我不知道,不过我都在没学习一步的时候会找新的资料学习,并替换掉旧的用法
首先配置首页路由:
from django.contrib import admin
from django.urls import path
from django.views.generic import TemplateView
from user import views
import xadmin
urlpatterns = [
path('xadmin/', xadmin.site.urls),
path('', TemplateView.as_view(template_name="index.html"), name="index"),
]
3进入静态index.html ,记得要替换相关路径
"/static/css/reset.css" 替换后
"../css/reset.css" 替换前
"/static/js/reset.css" 替换后
"../js/reset.js" 替换前
"/static/images/reset.css" 替换后
"../images/reset.png" 替换前
4引入login.html,导入from user import views
from django.contrib import admin
from django.urls import path
from django.views.generic import TemplateView
from user import views
import xadmin
urlpatterns = [
# xadmin,首页
path('xadmin/', xadmin.site.urls),
path('', TemplateView.as_view(template_name="index.html"), name="index"),
path('login/', views.login, name="login")
]
5在user mode中的views 中创建我们的页面返回值,第一个参数是请求,第二是放在templates中的登录页面login.html
from django.shortcuts import render
# Create your views here.
def login(request):
pass
return render(request, "login.html")
6在引入我们登录页面的时候记得要处理样式引入问题,参考3
7.表单提交的时候记得指定页面路径
8.由于我们的Django框架底层封装为了解决恶意重复请求,需要进行token识别认证,如果不做处理,就会出现403
解决办法就是表单中加入
{% csrf_token %}
9.开始完善注册登录逻辑,表单提交一般都是post请求,所以我们要在登录views中拦截,并调用Django自带登录验证处理,当然可以自定义,目前只是支持username和password登录验证,如果是邮箱加密码登录需要自定义处理
# Create your views here.
def loging(request):
if request.method == "POST":
username = request.POST.get("username")
password = request.POST.get("password")
#验证登录,并返回user对象
user =authenticate(username=username, password=password)
# 判断user登录对是否为None,如果None表示没有登录成功
if user is not None:
# 注意login()方法是Django自带的所以,起名字不要跟系统重复
login(request, user)
return render(request, "index.html")
else:
pass
return render(request, "login.html")
这链接有详细讲明Django 自带认证功能auth模块方法
https://www.cnblogs.com/wcwnina/p/9246228.html
10.在index.html 中根据登录状态来显示top栏,登录注册样式还是登录成功个人信息样式
还有后续…