标签: django-urls

ImportError:升级到 Django 4.0 后无法从“django.conf.urls”导入名称“url”

升级到Django 4.0后,运行时出现以下错误python manage.py runserver

  ...
  File "/path/to/myproject/myproject/urls.py", line 16, in <module>
    from django.conf.urls import url
ImportError: cannot import name 'url' from 'django.conf.urls' (/path/to/my/venv/lib/python3.9/site-packages/django/conf/urls/__init__.py)
Run Code Online (Sandbox Code Playgroud)

我的urls.py如下:

from django.conf.urls

from myapp.views import home

urlpatterns = [
    url(r'^$', home, name="home"),
    url(r'^myapp/', include('myapp.urls'),
]
Run Code Online (Sandbox Code Playgroud)

python django django-urls django-4.0

178
推荐指数
2
解决办法
20万
查看次数

获取Django管理URL以获取对象

在Django 1.0之前有一个简单的方法来获取一个对象的管理URL,我写了一个小的过滤器,我会像这样使用: <a href="{{ object|admin_url }}" .... > ... </a>

基本上我使用的是url reverse函数,视图名称为 'django.contrib.admin.views.main.change_stage'

reverse( 'django.contrib.admin.views.main.change_stage', args=[app_label, model_name, object_id] )
Run Code Online (Sandbox Code Playgroud)

得到网址.

正如您可能已经猜到的那样,我正在尝试更新到最新版本的Django,这是我遇到的障碍之一,获取管理URL的方法不再适用.

我怎么能在django 1.0中这样做?(或者1.1,因为我正在尝试更新到svn中的最新版本).

django django-urls django-admin

157
推荐指数
6
解决办法
13万
查看次数

Django可选的url参数

我有一个像这样的Django网址:

url(
    r'^project_config/(?P<product>\w+)/(?P<project_id>\w+)/$',
    'tool.views.ProjectConfig',
    name='project_config'
),
Run Code Online (Sandbox Code Playgroud)

和我的views.py:

def ProjectConfig(request, product, project_id=None, template_name='project.html'):
    ...
    # do stuff
Run Code Online (Sandbox Code Playgroud)

问题是我希望project_id参数是可选的.我想这样,project_id并且/project_config/都是同样有效的url模式,所以IF /project_config/12345abdce/传递,然后我可以使用它.就目前而言,如果我尝试访问没有project_id参数的url,我会得到404 .

python django django-urls django-views

150
推荐指数
6
解决办法
11万
查看次数

django static static url static root

我很困惑static root,想澄清一些事情.

为了服务于Django的静态文件,下面应该是settings.pyurls.py:

import os
PROJECT_DIR=os.path.dirname(__file__)
Run Code Online (Sandbox Code Playgroud)

1.应该收集静态文件的目录的绝对路径

STATIC_ROOT= os.path.join(PROJECT_DIR,'static_media/')
Run Code Online (Sandbox Code Playgroud)

2.静态文件的URL前缀

STATIC_URL = '/static/'
Run Code Online (Sandbox Code Playgroud)

3.静态文件的其他位置

STATICFILES_DIRS = ( os.path.join(PROJECT_DIR,'static/'),)
Run Code Online (Sandbox Code Playgroud)

......并在urls.py以下几行中:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += patterns('', (
    r'^static/(?P<path>.*)$',
    'django.views.static.serve',
    {'document_root': settings.STATIC_ROOT}
))
Run Code Online (Sandbox Code Playgroud)

我们也用 python manage.py collectstatic

问题:

  1. 任何人都可以向我解释工作流程:如何理想地完成工作.到目前为止,我将上面的代码片段复制/粘贴到他们指定的位置,并继续在静态目录中创建新文件,它可以工作.settings.STATIC_ROOT然而,在我看来,我指的是另一个目录.

  2. 如果有人能够解释每个设置的工作流程,那将是很好的:如何收集和管理文件,以及遵循什么样的好习惯.

谢谢.

django django-urls django-staticfiles

110
推荐指数
3
解决办法
9万
查看次数

在urls.py中为django 2.0使用path()或url()会更好吗?

在django在线课程中,教师让我们使用该url()函数调用视图并使用urlpatterns列表中的正则表达式.我在youtube上看过其他的例子.例如

from django.contrib import admin
from django.urls import include
from django.conf.urls import url

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^polls/', include('polls.urls')),
]


#and in polls/urls.py

urlpatterns = [        
    url(r'^$', views.index, name="index"),
]
Run Code Online (Sandbox Code Playgroud)

但是,在浏览Django教程时,他们使用的是path():

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name="index"),        
]
Run Code Online (Sandbox Code Playgroud)

此外,正则表达式似乎不适用于该path()函数,因为使用a path(r'^$', views.index, name="index")将找不到mysite.com/polls/视图.

正在使用path()没有正则表达式匹配正确的方式?是url()更强大,但更加复杂,以至于他们正在使用path()与开始我们吗?或者是针对不同工作的不同工具的情况?

python django django-urls

108
推荐指数
6
解决办法
8万
查看次数

Django URL TypeError:在include()的情况下,view必须是可调用的或list/tuple

升级到Django 1.10后,我收到错误:

TypeError: view must be a callable or a list/tuple in the case of include().
Run Code Online (Sandbox Code Playgroud)

我的urls.py如下:

from django.conf.urls import include, url

urlpatterns = [
    url(r'^$', 'myapp.views.home'),
    url(r'^contact/$', 'myapp.views.contact'),
    url(r'^login/$', 'django.contrib.auth.views.login'),
]
Run Code Online (Sandbox Code Playgroud)

完整的追溯是:

Traceback (most recent call last):
  File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 121, in inner_run
    self.check(display_num_errors=True)
  File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/management/base.py", line 385, in check
    include_deployment_checks=include_deployment_checks,
  File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/management/base.py", line 372, in _run_checks
    return checks.run_checks(**kwargs)
  File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/checks/registry.py", line 81, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/checks/urls.py", line …
Run Code Online (Sandbox Code Playgroud)

python django django-urls django-1.10

106
推荐指数
1
解决办法
8万
查看次数

Django:我怎样才能看到urlpatterns列表?

如何查看"反向"正在查看的当前urlpatter?

我在一个观点中反向调用我认为应该有效的论据,但事实并非如此.我可以用任何方式检查那里有什么,为什么我的模式不是?

django django-urls django-views

104
推荐指数
12
解决办法
5万
查看次数

什么是NoReverseMatch错误,我该如何解决?

我有一些代码,当它执行时,它抛出一个NoReverseMatch,说:

NoReverseMatch at/my_url/Reverse for'my_url_name',参数'()'和关键字参数'{}'未找到.n模式尝试:[]

这是什么意思,我能做些什么呢?

django django-urls

98
推荐指数
1
解决办法
8万
查看次数

Django URL重定向

如何将与我的任何其他URL不匹配的流量重定向回主页.我的urls.py看起来像,

urlpatterns = patterns('',
    url(r'^$', 'macmonster.views.home'),
    #url(r'^macmon_home$', 'macmonster.views.home'),
    url(r'^macmon_output/$', 'macmonster.views.output'),
    url(r'^macmon_about/$', 'macmonster.views.about'),
    url(r'^.*$',  'macmonster.views.home'),
)
Run Code Online (Sandbox Code Playgroud)

因为它是最后一个条目将所有"其他"流量发送到主页但我想通过HTTP 301或302重定向.

谢谢,

python django django-urls

95
推荐指数
5
解决办法
9万
查看次数

在include()中使用命名空间时有关app_name的ImpropyConfiguredError

我正在尝试django.我在urls.py中使用了namespaceinclude()的一个参数.当我运行服务器并尝试浏览时,我收到此错误.

File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\urls\conf.py", line 39, in include
    'Specifying a namespace in include() without providing an app_name '
django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported. Set the app_name attribute in the included module, or pass a 2-tuple containing the list of patterns and app_name instead.
Run Code Online (Sandbox Code Playgroud)

这些是我的urls.py文件:

#project/urls.py

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^reviews/', include('reviews.urls', namespace='reviews')),
    url(r'^admin/', include(admin.site.urls)),
]
Run Code Online (Sandbox Code Playgroud)

#app/urls.py

from django.conf.urls import url …
Run Code Online (Sandbox Code Playgroud)

python django django-urls

82
推荐指数
3
解决办法
5万
查看次数