Django开发之引入html开发01

在我们利用Django开发的时候,没有前后端分离,都是引入静态资源html,然后绑定数据。那么来讲讲实际操作步骤:
1.将前端写好的css,images,js资源文件放到static,如果项目中没有这个资源文件当然要新建
Django开发之引入html开发01
选中资源文件放到static中
Django开发之引入html开发01

2.配置static,这是专门用来存放资源文件的路径,要配置和声明,记得是在项目的settings.py配置
Django开发之引入html开发01

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.表单提交的时候记得指定页面路径
Django开发之引入html开发01

8.由于我们的Django框架底层封装为了解决恶意重复请求,需要进行token识别认证,如果不做处理,就会出现403
Django开发之引入html开发01
解决办法就是表单中加入
{% csrf_token %}
Django开发之引入html开发01
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开发之引入html开发01
这链接有详细讲明Django 自带认证功能auth模块方法
https://www.cnblogs.com/wcwnina/p/9246228.html

10.在index.html 中根据登录状态来显示top栏,登录注册样式还是登录成功个人信息样式
Django开发之引入html开发01
还有后续…