1

我学习 python 已经有一段时间了,我想让我的一个小程序可供更多人使用。我现在正在学习如何为我的项目创建 URL,但我无法为主页创建 URL。正如我在旧 django 版本的课程之一中发现的那样,您应该在 urls.py 文件中创建一个如下所示的函数:

from django.http import HttpResponse

def home(request):
    return HttpResponse('this is the test homepage')

并将其与views.py中的一些行配对:

path('^$', views.home)

这对我不起作用。我还尝试创建这样的路径:

 path('/', views.home)

请帮助或指导我了解 django 3.1.1 的最新指南。

编辑以响应@pygeek 的请求:

我的 urls.py 的内容:

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('about/', views.about),
    path('/', views.home)
]

settings.py 中我的应用程序数组的内容:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

和项目树:

.
└── RemoveBigFile
    ├── RBF1module
    │   ├── __init__.py
    │   ├── admin.py
    │   ├── apps.py
    │   ├── migrations
    │   │   └── __init__.py
    │   ├── models.py
    │   ├── tests.py
    │   └── views.py
    ├── RemoveBigFile
    │   ├── __init__.py
    │   ├── __pycache__
    │   │   ├── __init__.cpython-38.pyc
    │   │   ├── settings.cpython-38.pyc
    │   │   ├── urls.cpython-38.pyc
    │   │   ├── views.cpython-38.pyc
    │   │   └── wsgi.cpython-38.pyc
    │   ├── asgi.py
    │   ├── settings.py
    │   ├── urls.py
    │   ├── views.py
    │   └── wsgi.py
    ├── RemoveBigFile.sublime-project
    ├── RemoveBigFile.sublime-workspace
    ├── db.sqlite3
    └── manage.py
4

2 回答 2

2

3.1。django 使用空引号

'' 

用于主页而不是正则表达式

^$

或斜线

/

感谢@pygeek 的贡献,我的代码在 urls.py 中如下所示:

path('', views.home),

并且工作得很好。我在以下链接的示例代码中找到了响应:docs.djangoproject.com/en/3.1/topics/http/urls

于 2020-09-13T19:36:51.797 回答
0

您可以使用 HttpResponse 但我发现呈现页面会更好。这是一个快速示例。

# urls.py
from django.urls import path
from appname import views

urlpatterns = [
   path('', views.index, name='index')
]
# views.py
from django.shortcuts import render

def index(request):
   return render(request, 'index.html')

当请求一个空的 url 路径时,将触发此视图。在开发环境中,这将是: http://localhost:8000/ 这假设您还在项目根目录中创建了一个模板目录。您可以在 settings.py 中验证这一点。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates']
        ,
        'APP_DIRS': True,
        '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',
            ],
        },
    },
]

记下指向基本目录的“DIRS”,然后寻找一个名为“模板”的目录。该目录将是调用视图时呈现的模板的主目录。在views.py 中注意'index.html' 这是调用函数时视图将呈现的模板。

另一个重要的点。对于您创建的每个应用程序,python manage.py startapp appname您应该创建一个urls.py在该应用程序目录中调用的 python 文件。为了让它工作,你应该修改你的 mainurls.py看起来像这样:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('', include('appname.urls')),
    path('admin/', admin.site.urls),
]
于 2020-09-13T18:28:39.517 回答