标签: django-urls

Django:动态LOGIN_URL变量

目前,在我的settings模块中我有这个:

LOGIN_URL = '/login'
Run Code Online (Sandbox Code Playgroud)

如果我决定更改登录URL urls.py,我也必须在此更改.还有更有活力的方法吗?

python django django-urls

6
推荐指数
1
解决办法
4467
查看次数

Django - 为dev web服务器显示404页面(http://127.0.0.1:8000/)

我熟悉Django.

我已经成功安装并测试了一个演示站点.我现在想要打开管理模块,看看会发生什么.

我采取的步骤(授予,一些是不必要的,但我只是想确保我从一个干净的石板开始):

  1. 编辑mysite/settings.py以启用管理员
  2. 编辑mysite/url.py以启用管理员
  3. 删除并重新创建我的后端数据库
  4. 运行./manage.py syncdb(并正确响应提示)
  5. 启动了开发Web服务器(./manange.py runserver)

这是我的mysite/settings.py文件的样子(仅限相关部分)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # The next lines are my models
    'mysite.foo',
    'mysite.foobar',
)
Run Code Online (Sandbox Code Playgroud)

这是我的mysite/urls.py文件的样子:

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Example:
    # (r'^mysite/', include('mysite.foo.urls')),

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
    # to INSTALLED_APPS to enable admin documentation:
    (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin: …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-urls django-admin

6
推荐指数
1
解决办法
9371
查看次数

Django站点 - 两个站点的urls.py不同

我为我的客户维护一个Django webapp.我们在Django和计算机用户中建立了它,它很棒.我们现在想要迎合移动设备用户.

在模板切换之上,我们还需要以不同的方式工作.应用程序将具有以略有不同的方式工作的视图,但也需要简化URL结构.

我意识到我要求的是什么违反了DRY的精神,但是有一个很好的方法来分裂它,urls.py以便它的一半用于ourdomain.com,而另一半用于m.ourdomain.com?如果我能做到这一点,我可以添加mobile_views.py并编写新视图.

Django的网站已在该项目中启用,但我很高兴使用硬编码request.domain.startswith('m.')式黑客.似乎可能表现得更好 - 但我不知道如何从URL文件中获取请求.

django django-urls django-sites

6
推荐指数
1
解决办法
1168
查看次数

在Django中使用哪个:ListView或list_detail?

我正在阅读有关通用视图的一些教程和书籍.

官方教程的第4部分中,他们写了一个这样的例子

from django.conf.urls import patterns, include, url
from django.views.generic import DetailView, ListView
from polls.models import Poll

urlpatterns = patterns('',
    url(r'^$',
        ListView.as_view(
            queryset=Poll.objects.order_by('-pub_date')[:5],
            context_object_name='latest_poll_list',
            template_name='polls/index.html')),
    url(r'^(?P<pk>\d+)/$',
        DetailView.as_view(
            model=Poll,
            template_name='polls/detail.html')),
    url(r'^(?P<pk>\d+)/results/$',
        DetailView.as_view(
            model=Poll,
            template_name='polls/results.html'),
        name='poll_results'),
    url(r'^(?P<poll_id>\d+)/vote/$', 'polls.views.vote'),
)
Run Code Online (Sandbox Code Playgroud)

我也一直在阅读Django的权威指南:Web Development Done Right,Second Edition,当他们谈到通用视图时,他们就像这样写了他们的例子

from django.conf.urls.defaults import *
from django.views.generic import list_detail
from mysite.books.models import Publisher

publisher_info = {
    'queryset': Publisher.objects.all(),
    'template_name': 'publisher_list_page.html',
}

urlpatterns = patterns('',
    (r'^publishers/$', list_detail.object_list, publisher_info)
)
Run Code Online (Sandbox Code Playgroud)

我应该使用ListView还是list_detail?他们都来自 …

django django-urls

6
推荐指数
2
解决办法
9216
查看次数

Django-MPTT子页面的完整路径如何制作?

我开始使用Django-MPTT应用程序在我的Django网站页面上获得基于树的方法.

对于前者 我有子页面的页面:

发呆:

  • 声乐恍惚(子页面)
  • 硬恍惚(子页)

休息:

  • Atmo Breaks(子页面)
  • 渐进式中断(子页面)

如何从urls.py访问它们?什么模式会有所帮助?我是否需要在模型中存储Full_path,或者可以通过url模式完成?

django-urls django-mptt

6
推荐指数
2
解决办法
3196
查看次数

如何使参数的reverse_lazy()变得懒惰?

介绍

对于特定需求(django-jqgrid),我定义了一个类(表示一个Grid),我必须提供一个url属性.由于我只使用反向URL(没有静态定义),我用reverse_lazy()这个问题.

只要我不必传递参数,这就行得很好reverse_lazy().但是,如果我想Grid特定于某个对象(这里是a DocumentSet),那么这个url参数也需要特定于该对象,因此我需要为reverse_lazy()提供一个参数.

在运行时,我可以访问,DocumentSet因为我将它定义为对象的属性,并且我确保调用的第一个函数Grid将此对象作为参数,并正确设置属性.

第一次尝试

我尝试使用此代码:

class DocumentGrid(JqGrid):
    documentset = None
    model = Document
    url = reverse_lazy('document-grid-handler', kwargs = {'pk' : documentset.id, })

    def get_queryset(self, request):
        return self.documentset.documents
    def get_json(self, request, documentset):
        self.documentset = documentset
        return super(DocumentGrid, self).get_json(request)
Run Code Online (Sandbox Code Playgroud)

错误

但是当然,导入文件时会失败,因为NoneType object has no attribute 'id'.

第二次尝试

所以我尝试使用django.utils.functional.lazy(),通过将这个琐碎和愚蠢的函数添加到我的模型:

def get_id(self):
    return self.id
Run Code Online (Sandbox Code Playgroud)

并通过使用此代码:

class DocumentGrid(JqGrid):
    documentset = …
Run Code Online (Sandbox Code Playgroud)

django django-urls lazy-evaluation

6
推荐指数
1
解决办法
7585
查看次数

反向未找到错误

如果我有一个像这样的URL:

url(r'^reset/(?P<uid>\w+)/(?P<token>\w+)/$', 'django.contrib.auth.views.password_reset_confirm', name="reset_password")
Run Code Online (Sandbox Code Playgroud)

和这样的URL标记:

{% url 'reset_password' uid=uid token=token %}
Run Code Online (Sandbox Code Playgroud)

当我尝试呈现包含标记的页面时,为什么会出现此错误:

Reverse for 'reset_password' with arguments '()' and keyword arguments not found 
Run Code Online (Sandbox Code Playgroud)

uid和token都是有效的字符串.

python django django-templates django-urls django-1.5

6
推荐指数
1
解决办法
409
查看次数

如何将变量从一个视图传递到另一个视图并使用Django中的最后一个视图的URL进行渲染?

我正在使用Django构建学生管理系统.

在此代码中,用户name=StudentName&grade=Grade&id=StudentID&phone=ParentPhoneNumber&report=StudentReportNumber使用该decrypt()方法搜索具有加密查询的学生 .

以下是两种方法,即处理查询的方法和显示学生资料的方法.

查询中的数据不会保存到数据库中,但会用于从数据库中查询学生详细信息.

def process_query(request):
    # process the query from the url /?details={{ some hashes here }}

    if request.method == 'GET':
        raw_deatils = request.GET.get('details', None)
        if raw_deatils:
            details = decrypt(raw_deatils)
            # decrypt is a function that is defined
            # in the utils which takes the input string,
            # check predeifined tests to test if valid.
            # and return the decrypted query string else None

            if details:

            # now the decrypted message looks something like …
Run Code Online (Sandbox Code Playgroud)

python django django-urls django-views

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

将static()添加到urlpatterns只能通过追加到列表中来工作

我很确定周围有重复的,但是找不到。

在dev的urls.py中声明a urlpatterns时,我成功使用了以下命令:

urlpatterns = [
    # some routes
]

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Run Code Online (Sandbox Code Playgroud)

可以理解,哪个可行。

但是,如果我尝试以下操作:

urlpatterns = [
    # some routes,
    static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
]
Run Code Online (Sandbox Code Playgroud)

django服务器死于抱怨:

?: (urls.E004) Your URL pattern [<URLPattern '^static\/(?P<path>.*)$'>] is invalid. Ensure that urlpatterns is a list of path() and/or re_path() instances.

为什么两个定义不相等?的返回static()应相同:

return [
    re_path(r'^%s(?P<path>.*)$' % re.escape(prefix.lstrip('/')), view, kwargs=kwargs),
]
Run Code Online (Sandbox Code Playgroud)

因此有效,但仅当我将元素连接到列表而不是直接在列表中定义时才有效。

为什么一种方法有效,而另一种无效?

python django django-urls python-3.x

6
推荐指数
1
解决办法
468
查看次数

django2中带有router.urls的名称空间

在django2.1.5和DRF 3.9.1中,我试图添加不能使用的router.urls命名空间。

path('api/v2/', include(router.urls, namespace="v2"))
Run Code Online (Sandbox Code Playgroud)

我的终端中的错误是

“在include()中指定名称空间而不提供app_name'django.core.exceptions.ImproperlyConfigured:不支持在include()中指定名称空间而不提供app_name。在包含的模块中设置app_name属性,或传递2包含模式列表和app_name的元组”

我为命名空间设置app_name时,找不到任何合适的解决方案。如何在router.urls上使用名称空间,或者在Django 2版本中无法使用它?

尝试添加app_name,但不能解决我的问题

这是我的代码。

config.urls.py

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

from rest_framework import routers

from project.courses import views

router = routers.SimpleRouter()
router.register(r'courses', views.CourseViewSet)
router.register(r'reviews', views.ReviewViewSet)

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api-auth/', include('rest_framework.urls')),
    path('api/v1/courses/', include('project.courses.urls', namespace='courses')),
    path('api/v2/', include(router.urls, namespace="v2")),
]
Run Code Online (Sandbox Code Playgroud)

courses.urls.py

from django.urls import path
from . import views

app_name = 'project.courses'
urlpatterns = [
    path('', views.ListCreateCourse.as_view(), name='course_list'),
    path('<int:pk>', views.RetrieveUpdateDestroyCourse.as_view(), 
Run Code Online (Sandbox Code Playgroud)

name ='course_detail'),path('/ reviews /',views.ListCreateReview.as_view(),name ='review_list'),path('/ reviews /',views.RetrieveUpdateDestroyReview.as_view(),name ='review_detail '),]

这是我要编写的代码。 …

django-urls django-rest-framework django-2.1

6
推荐指数
1
解决办法
502
查看次数