标签: django-urls

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 CMS App Hook教程

我有一个Django CMS项目,需要创建一个非CMS应用程序"Achievemnets".客户希望完全控制页面设计,这意味着页面应该是CMS页面.但是我已经创建了特定的视图来显示页面中的所有achievemtns并单击更多链接,它将详细显示.我需要将它移植到Django CMS我根据Django CMS文档中的CMS App Hook方法尝试过.但它们都不起作用.

请告诉我一个有助于学习CMS App Hooking的教程

python django django-urls django-views django-cms

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

Django URL conf和Backbone.js路由器

我有一个使用路由器设置的backbone.js单页应用程序(嗯,实际上是带有Backbone.Marionette AppRouter的Backbone.Marionette应用程序,但仍然如此).但是,后端基于Django,我没有URL conf指向已经在backbone.js路由中的所有URL的视图.

基于Django URL conf中的现有URL,Backbone.js将服务于骨干路由,无论Django conf中列出了什么 - 似乎有些东西,任何东西都需要存在.

我是否需要有适当的Django视图才能为旧浏览器/ SEO提供后备?

协调Django URL conf和Backbone.js路由器的最佳实践是什么?

django django-urls backbone.js marionette

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

如何捕获Django URL模式中的子域?

我有一个Django应用程序,目前支持多种语言.我想添加子域支持,以便"de.mysite.com"查询德语文章,而"mysite.com"查询英语(默认语言).将有大约20个子域都指向同一个Django应用程序.

我有一个抽象模型,包含我的数据的所有字段和每种语言的派生模型.每种语言都有自己的数据库表,如下所示:

class ArticleBase(models.Model):
    title = models.CharField(max_length=240, unique=True)
    date_added = models.DateField(auto_now_add=True)

    class Meta:
        abstract = True

# This is English, the default.
class Article(ArticleBase):
    pass

class Article_de(ArticleBase):
    pass
Run Code Online (Sandbox Code Playgroud)

我可以得到这样的文章(我今天有这个工作):

def article(request, title, language=None):
    if language:
        mod = get_model('app', 'Article_' + language)
        items = mod.filter(title=title)
    else:
        items = Article.objects.filter(title=title)
Run Code Online (Sandbox Code Playgroud)

这是我当前的网址格式:

url(r'^article/(?P<title>[a-zA-Z_-]+)/$", 'app.views.article', name='article'),
Run Code Online (Sandbox Code Playgroud)

如何解析URL模式中的子域前缀,以便将其传递到文章视图中?或者我在处理视图时是否应该从请求中获取此信息?

django subdomain django-urls internationalization

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

获取模板中的当前URL kwargs?

我正在通过以下方式完成此任务:

    context['card_type'] = self.kwargs['card_type']
    context['role_line'] = self.kwargs['role_line']
    context['sort_by'] = self.kwargs['sort_by']
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很直观.

如果我已经在网站上了 players/one/two/three

是否有一种已经预先构建的方法来获取one, two & three模板中使用的当前kwargs ?

编辑

urls.py

urlpatterns = patterns('',
                   url(
                       r'^$',
                       NationListView.as_view(),
                       name='index'
                   ),
                   url(
                       r'^(?P<slug>[a-z-]*)/$',
                       NationDetailView.as_view(),
                       name='nation'
                   ),
                   url(
                       r'^(?P<slug>[a-z-]*)/(?P<card_type>[a-z]*)/(?P<role_line>[a-z]*)/(?P<sort_by>[a-z0-9]*)/$',
                       NationDetailFilteredView.as_view(),
                       name='nation_filter'
                   ),
                   )
Run Code Online (Sandbox Code Playgroud)

构建上下文的mixin

class CoreDetailFilteredMixin(object):

    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        context = super(CoreDetailFilteredMixin, self).get_context_data(**kwargs)

        base_objects(context)
        # Pull all the players that belong to the object_type
        context['players'] = Player.objects.filter(
            **{filters: context['object'].asset_id}
        )

        # Define …
Run Code Online (Sandbox Code Playgroud)

django django-templates django-urls

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

Django:用户名的urlpattern?

到目前为止,团队成员将此代码用于用户名的url模式:

# urls.py
urlpatterns = patterns('...',
   url(r'^user/(?P<username>[.-_\w]+)/foo', 'myapp.views.foo'),
   ....
Run Code Online (Sandbox Code Playgroud)

有一个隐藏的错误:如果用户名包含-倒车将失败,因为正则表达式的开始[.-_"从所有字符手段._".

可以使用什么模式匹配所有有效的用户名?

PS:我想-如果你想在django中匹配所有可能的用户名,那么将符号添加到正则表达式是不够的.

python regex django django-urls

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

Django 1.10网址弃用

有一些弃用警告.这是问题所在:

RemovedInDjango110Warning: Support for string view arguments to url()
is deprecated and will be removed in Django 1.10 
(got django.views.static.serve). Pass the callable instead.
'document_root': settings.MEDIA_ROOT,
Run Code Online (Sandbox Code Playgroud)

这是网址:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^ckeditor/', include('ckeditor_uploader.urls')),
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
            'document_root': settings.MEDIA_ROOT,
        }),
    url(r'^post/(\d+)$', post),
    url(r'^(\w+)$', category),
    url(r'^$', category),
]
Run Code Online (Sandbox Code Playgroud)

怎么解决?谢谢你的时间.

django django-urls

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

不要国际化/翻译URL

问题

目前,我想要升级到Django 1.10.3Django 1.9.8.目前我的测试失败了,因为由于某种原因,Django试图翻译/国际化我的URL reverse().

在谈到国际化时我没有改变任何东西,并且非常希望关闭这个"功能".它不仅没有通过大量的测试,而且还有一些项目必须静态地引用这个网站的URL.这意味着不允许更改此网站上的URL(或者我必须为Django提供的每个翻译编辑它们,这将是一个真正的痛苦).


错误

我在测试中遇到的实际错误如下:

Traceback (most recent call last):
  File "/tests/unit/views/test_index.py", line 14, in setUp
    self.url = reverse('indexpage')
  File "/local/lib/python2.7/site-packages/django/urls/base.py", line 91, in reverse
    return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))
  File "/local/lib/python2.7/site-packages/django/urls/resolvers.py", line 346, in _reverse_with_prefix
    possibilities = self.reverse_dict.getlist(lookup_view)
  File "/local/lib/python2.7/site-packages/django/urls/resolvers.py", line 243, in reverse_dict
    return self._reverse_dict[language_code]
KeyError: 'nl-nl'
Run Code Online (Sandbox Code Playgroud)

很明显,Django正在尝试使用此项目设置中提供的语言代码.


我试过了什么

我试过将USE_I18N设置设置为False.我也试过这个USE_L10N.我也尝试删除LANGUAGE_CODE我的设置中指定的,但随后抛出的错误是指en-us语言代码而不是nl-nl语言代码.我也尝试安装LocaleMiddleware,看看我是否至少可以让错误停止显示,但不幸的是,这也没有用.


如何在Django中关闭URL内化/翻译.或者,如果不可能,那将是一个很好的选择?

提前致谢.

python django django-urls django-1.10

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

TypeError:无法在Django视图函数中解压缩不可迭代的int对象

以下是我在URL.py,views.py和HTML页面中的代码。但是,它返回了以下错误:TypeError:无法解压缩不可迭代的int对象。

urlpatterns = [
    path('', views.blogs_home, name='blogs'),
    path('<int:id>', views.single_blog, name='detailed_view'),
Run Code Online (Sandbox Code Playgroud)

]

我正在尝试在列表视图中捕获帖子博客的ID,以使用ID查询从数据库中获取博客对象。以下是我的查看代码。

def single_blog(request,id):
   blog_single = Blogs.objects.get(id)
   context = {'blog_single': blog_single}
   template = 'blog_home.html'

   return render(request, template, context)
Run Code Online (Sandbox Code Playgroud)

但是,正如我提到的,它返回上述错误。

有人可以解释我在做什么错

python django django-urls django-views

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

Django管理员升级到2.1后无法登录

将旧的Django 1.8升级到2.1后,当我尝试登录我的管理站点时,收到404消息:

Using the URLconf defined in <mysite>.urls, Django tried these URL patterns, in this order:
[...]
The current path, login/, didn't match any of these.
Run Code Online (Sandbox Code Playgroud)

我猜这是真的,因为它应该__admin/login像我一样urls.py:

urlpatterns = [
    ...
    path(r'__admin/', admin.site.urls),
    ...
]
Run Code Online (Sandbox Code Playgroud)

但:

  • GET请求/__admin/login按预期返回登录页面
  • 问题仅发生在生产中(在VPS上有乘客WSGI),而不是在localhost上
  • 通过手动登录用户manage.py shelldjango.contrib.auth.authenticate() 正常工作
  • 不幸的是,升级发生在VPS机器中的迁移的同时,因此数据库也可能存在问题.

Python版本(在VPS上):3.6.7
Django版本(在VPS上):2.1.3(也尝试过2.1.4)

编辑1

我已经注释掉了所有其他内容urls,因此现在唯一可用的URL是__admin.现在,当我登录时,我收到此错误:

Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:

     1. __admin/

The current path, …
Run Code Online (Sandbox Code Playgroud)

django django-urls django-admin django-authentication django-settings

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