【Django笔记】5 Django模板

  1. Django-bootstrap3

Bootstrap 是要给CSS/HTML 框架

Django-bootstrap3 是Bootstrap3 集成到Django中,作为Django 的一个应用。

(3 表示版本号)

Django-bootstrap3 安装

django-bootstrap3 · PyPI

Installation

  1. Install using pip:

    复制代码
    pip install django-bootstrap3

    Alternatively, you can install download or clone this repo and call pip install -e ..

  2. Add to INSTALLED_APPS in your settings.py:

    复制代码
    INSTALLED_APPS = (
        # ...
        "bootstrap3",
        # ...
    )

安装 bootstrap3 失败安装 bootstrap4

pip3 install django-bootstrap4

pip show django-bootstrap4

guest/settings.py

添加

复制代码
'bootstrap4'
复制代码
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'sign',
    'bootstrap4'
]

ImportError: cannot import name 'url' from 'django.conf.urls' (D:\software\python3\anconda3\Lib\site-packages\django\conf\urls\init.py)

问题原因:

https://wenku.csdn.net/answer/d0b45f1a337d4672b2b708c7dab43e61

python 复制代码
"""guest URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.2/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
#from django.urls import url
from django.contrib import admin
from django.urls import path
from sign import views

urlpatterns = [
    path(r'^admin/', admin.site.urls),
    path(r'^index/$', views.index),  # 添加 index 、路径配置
    path(r'^login_action/$',views.login_action),  # 处理登录请求
    path(r'^event_manage/$',views.event_manage)  # 处理登录请求
]

报错 :

关于django中path和url函数的使用介绍

关于django中path和url函数的使用介绍_django path-CSDN博客

python 复制代码
#from django.urls import url
from django.contrib import admin
from django.urls import path
from sign import views

urlpatterns = [
    path('admin/',  admin.site.urls),
    path('index/', views.index),  # 添加 index 、路径配置
    path('login_action/',views.login_action),  # 处理登录请求
    path('event_manage/',views.event_manage)  # 处理登录请求
]

path() 函数是 Django 2.0 版本引入的新函数,它更加直观和易用,支持使用 str 类型的路由,可以通过 , 等转换器来定义动态参数,而且不再需要使用正则表达式来匹配 URL,大大简化了 URL 配置的过程。

url() 函数是 Django 1.x 版本中用于 URL 配置的函数,它的语法和 path() 不同,需要使用正则表达式来匹配 URL。

输入 admin admin123456

http://127.0.0.1:8000/admin/

add 添加用户

user1 user123456

退出,用user1 进入

登录失败 ;

修改成密码为user12345678 登录成功 :

python 复制代码
from django.shortcuts import render
from django.contrib import  auth

# Create your views here.
from django.http import HttpResponse
from django.http import HttpResponse, HttpResponseRedirect


# 定义inex 函数,通过HttpResponse 类向客户端返回字符创
def index(request):
    # return HttpResponse("Hello Django!")  # 使用Django 的render函数
    return render(request, "index.html")


def login_action(request):
    if request.method == "POST":
        username = request.POST.get('username', "")  # 字段对应表单的input属性
        password = request.POST.get('password', '')
        # 使用authenticate 函数认证处的用户名和密码。它接受两个参数
        #并且会在用户名密码正确的情况下返回一个user 对象否则autenticate() 返回None
        user=auth.authenticate(username=username,password=password)
        print(f"user:{user}")
        if  user is not None:
            response = HttpResponseRedirect('/event_manage/')  # 重定向
            auth.login(request,user)# 登录

            request.session['user'] = username  # 将session 信息记录到浏览器

            #request.session['user'] = username  # 将session 信息记录到浏览器
            return response
        # if username == 'admin' and password == "admin123":
        #
        #     # return HttpResponse('login success')
        #     response= HttpResponseRedirect('/event_manage/')  # 重定向
        #     #response.set_cookie('user',username,3600)  # 添加浏览器
        #     request.session['user']=username # 将session 信息记录到浏览器
        #     return response
        else:
            return render(request, "index.html", {'error': 'username or password error!'})


# 发布会管理

def event_manage(request):
    #username=request.COOKIES.get("user","")# 读取浏览器cookie
    username=request.session.get("user","") # 读取浏览器session
    return render(request, "event_manage.html",{"user":username})

@login_required

sign/views.py

python 复制代码
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
from django.contrib import  auth

# Create your views here.
from django.http import HttpResponse
from django.http import HttpResponse, HttpResponseRedirect


# 定义inex 函数,通过HttpResponse 类向客户端返回字符创
def index(request):
    # return HttpResponse("Hello Django!")  # 使用Django 的render函数
    return render(request, "index.html")


def login_action(request):
    if request.method == "POST":
        username = request.POST.get('username', "")  # 字段对应表单的input属性
        password = request.POST.get('password', '')
        # 使用authenticate 函数认证处的用户名和密码。它接受两个参数
        #并且会在用户名密码正确的情况下返回一个user 对象否则autenticate() 返回None
        user=auth.authenticate(username=username,password=password)
        print(f"user:{user}")
        if  user is not None:
            response = HttpResponseRedirect('/event_manage/')  # 重定向
            auth.login(request,user)# 登录

            request.session['user'] = username  # 将session 信息记录到浏览器

            #request.session['user'] = username  # 将session 信息记录到浏览器
            return response
        # if username == 'admin' and password == "admin123":
        #
        #     # return HttpResponse('login success')
        #     response= HttpResponseRedirect('/event_manage/')  # 重定向
        #     #response.set_cookie('user',username,3600)  # 添加浏览器
        #     request.session['user']=username # 将session 信息记录到浏览器
        #     return response
        else:
            return render(request, "index.html", {'error': 'username or password error!'})


# 发布会管理
@login_required
def event_manage(request):
    #username=request.COOKIES.get("user","")# 读取浏览器cookie
    username=request.session.get("user","") # 读取浏览器session
    return render(request, "event_manage.html",{"user":username})

清理缓存

直接访问

http://127.0.0.1:8000/event_manage/

在访问被@login_reuqired 装饰的视图时,默认跳转的URL 中包含"acount/login/"。

修改.../urls.py 增加新的路径位置:

复制代码
path('',views.index),
复制代码
path('accounts/login/',views.index)

跳转到 登录

python 复制代码
#from django.urls import url
from django.contrib import admin
from django.urls import path
from sign import views

urlpatterns = [
    path('',views.index),
    path('admin/',  admin.site.urls),
    path('index/', views.index),  # 添加 index 、路径配置
    path('login_action/',views.login_action),  # 处理登录请求
    path('event_manage/',views.event_manage) , # 处理登录请求
    path('accounts/login/',views.index)
]
相关推荐
supabc12323 分钟前
欧盟电子发票(XRechnung/Peppol/ZUGFeRD)踩坑记:用 Python 不装 Java 跑官方校验规则
xml·python·开源·电子发票·1024程序员节
ZhengEnCi44 分钟前
AI Agent工具调用防护层怎么写-一份能直接跑的Python四层拦截实现
python·llm·agent
ZhengEnCi1 小时前
AI Agent工具误调用怎么解决-从参数校验到高危二次确认的四层工程防线
python·llm·agent
镜子AI2 小时前
镜子AI工程教程:用Python实现关键词布局检查器与语义改写查重(附完整代码)
人工智能·python·microsoft
小oo呆3 小时前
【学习心得】Python协程
python
信誓旦旦的程序猿3 小时前
【Python量化实战宝典 #22】涨跌停、连板情绪手册:情绪指标构建(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
gCode Teacher 格码致知4 小时前
Pandas教学-21:subplots的使用
python·pandas·1024程序员节
2601_967980114 小时前
Python开发的顶级开源项目全景图:2025-2026年生态概览
python·机器学习·开源项目·数据科学·生态概览
benchmark_cc4 小时前
量化开发中,什么时候应该停止手动下载股票数据?
python·数据分析·pandas·量化交易·1024程序员节·股票数据·quantdash
泡茶喝茶写代码4 小时前
A股量化策略回测实战:从行情数据到绩效评估(第 15 篇):新高新低策略
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口