我为我的客户维护一个Django webapp.我们在Django和计算机用户中建立了它,它很棒.我们现在想要迎合移动设备用户.
在模板切换之上,我们还需要以不同的方式工作.应用程序将具有以略有不同的方式工作的视图,但也需要简化URL结构.
我意识到我要求的是什么违反了DRY的精神,但是有一个很好的方法来分裂它,urls.py以便它的一半用于ourdomain.com,而另一半用于m.ourdomain.com?如果我能做到这一点,我可以添加mobile_views.py并编写新视图.
Django的网站已在该项目中启用,但我很高兴使用硬编码request.domain.startswith('m.')式黑客.似乎可能表现得更好 - 但我不知道如何从URL文件中获取请求.
我有一个Django CMS项目,需要创建一个非CMS应用程序"Achievemnets".客户希望完全控制页面设计,这意味着页面应该是CMS页面.但是我已经创建了特定的视图来显示页面中的所有achievemtns并单击更多链接,它将详细显示.我需要将它移植到Django CMS我根据Django CMS文档中的CMS App Hook方法尝试过.但它们都不起作用.
请告诉我一个有助于学习CMS App Hooking的教程
我有一个使用路由器设置的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应用程序,目前支持多种语言.我想添加子域支持,以便"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模式中的子域前缀,以便将其传递到文章视图中?或者我在处理视图时是否应该从请求中获取此信息?
我正在通过以下方式完成此任务:
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) 到目前为止,团队成员将此代码用于用户名的url模式:
# urls.py
urlpatterns = patterns('...',
url(r'^user/(?P<username>[.-_\w]+)/foo', 'myapp.views.foo'),
....
Run Code Online (Sandbox Code Playgroud)
有一个隐藏的错误:如果用户名包含-倒车将失败,因为正则表达式的开始[.-_"从所有字符手段.来_".
可以使用什么模式匹配所有有效的用户名?
PS:我想-如果你想在django中匹配所有可能的用户名,那么将符号添加到正则表达式是不够的.
有一些弃用警告.这是问题所在:
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 1.10.3从Django 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内化/翻译.或者,如果不可能,那将是一个很好的选择?
提前致谢.
以下是我在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)
但是,正如我提到的,它返回上述错误。
有人可以解释我在做什么错
将旧的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)
但:
/__admin/login按预期返回登录页面manage.py shell并django.contrib.auth.authenticate() 正常工作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
django ×10
django-urls ×10
python ×4
django-views ×2
backbone.js ×1
django-1.10 ×1
django-admin ×1
django-cms ×1
django-sites ×1
marionette ×1
regex ×1
subdomain ×1