You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django网页点击链接触发OS错误[Errno22],寻求问题排查解决

Django页面链接点击触发OS错误[Errno 22]的排查与解决

我用Django开发网页时,点击页面内链接触发OS错误:[Errno 22] Invalid argument: 'C:\Users\Lenovo\Desktop\django projects\env\Lib\site-packages\django\contrib\admin\templates\home\ran_num_gen.html',无法定位问题根源,需要解决。

相关代码与配置

views.py

from django.shortcuts import render
from django.template.context import Context
# Create your views here.

def home(request):
    
    return render(request , 'home\\home.html' )

def num_guess_game(request):

    return render (request ,'home\\num_guess_game.html')

def ran_num_gen(request):

    return render (request ,'home\\ran_num_gen.html')

def ran_pwd_gen(request):

    return render (request ,'home\\ran_pwd_gen.html')

urls.py

"""
URL configuration for core project.

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.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.contrib import admin
from django.urls import path
from home.views import *

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', home ,name='home'),
    path('ran_num_gen/', ran_num_gen , name='ran_num_gen' ),
    path('ran_pwd_gen/', ran_pwd_gen ,name='ran_pwd_gen' ),
    path('num_guess_game/', num_guess_game , name='num_guess_game' ),

    
]

home.html

{% extends 'home\\base.html' %}

{% block title %}Welcome to homepage{% endblock title %}

 {% block content %}
 
 <h1>welcome to ALL ABOUT RANDOM</h1> 
 <p>i made this site to learn more about django</p>
 you can do the following things here :
  <hr>
 <li><a href="ran_num_gen/">Random number generator</a></li>
 <hr>
 <li><a href="ran_pwd_gen/">Random password generator</a></li>
 <hr>
 <li><a href="num_guess/">Random guess game</a></li>
 <hr>
 
 {% endblock content %}

我试过修改链接名称、添加HTML后缀,都没解决问题。


错误根源与解决方法

1. 修复模板路径的分隔符问题

Windows的反斜杠\在Python字符串中是转义字符,你用home\\home.html会导致Django解析路径异常,错误地去admin模板目录下查找文件。把所有模板路径里的\\替换为/:

修改views.py中的render路径:

def home(request):
    return render(request , 'home/home.html' )

def num_guess_game(request):
    return render (request ,'home/num_guess_game.html')

def ran_num_gen(request):
    return render (request ,'home/ran_num_gen.html')

def ran_pwd_gen(request):
    return render (request ,'home/ran_pwd_gen.html')

同时修改home.html的继承路径:

{% extends 'home/base.html' %}

2. 修正链接路径不匹配问题

home.html中第三个链接是num_guess/,但urls.py中对应的路径是num_guess_game/,点击会触发404,需要修正链接:

<li><a href="num_guess_game/">Random guess game</a></li>

3. 确认模板目录配置正确性

检查settings.py,确保你的home应用在INSTALLED_APPS中,且模板配置正确:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'home',  # 必须添加该应用
]

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],  # 应用内模板目录无需额外配置,留空即可
        'APP_DIRS': True,  # 开启后Django会自动搜索应用内的templates目录
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

内容的提问来源于stack exchange,提问作者somesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 04:55:02