鉴于Django.db模型类:
class P(models.Model):
type = models.ForeignKey(Type) # Type is another models.Model class
name = models.CharField()
Run Code Online (Sandbox Code Playgroud)
其中一个人希望创建一个具有指定类型的新P,即如何使"type"成为默认的隐藏字段(来自用户),其中type为:
http://x.y/P/new?type=3
Run Code Online (Sandbox Code Playgroud)
因此,在形式中不会出现"类型"字段,但是当保存P时,其类型将具有id 3(即Type.objects.get(pk = 3)).
其次,当使用通用Django视图时,一个(并且可能)如何通过urls.py在URL中指定"默认"类型,即.
urlpatterns = ('django.generic.views.create_update',
url(r'^/new$', 'create_object', { 'model': P }, name='new_P'),
)
Run Code Online (Sandbox Code Playgroud)
我发现非常难以描述,这可能是问题的一部分.:)输入非常感谢!
在django中,我定义了这样的url
(r'^checkstring/(?P<string>\w+)/$',views.check_str,name='check str')
Run Code Online (Sandbox Code Playgroud)
但是,当我输入字符串输入,如ibrahim.yilmaz,ibrahi!m或ibrahim@ibrahim.com时,它返回http 404.那么我怎么能写出接受每一个字符串的url?
任何帮助将不胜感激.
易卜拉欣
例如,有没有办法可以反转添加到自定义django AdminSite的URL
class MyAdminSite(AdminSite):
def get_urls(self):
urls = super(MyAdminSite, self).get_urls()
my_urls = patterns('',
url(r'some_view/$',self.admin_view( SomeView.as_view()), name='some_view' ),
)
return my_urls + url
myadmin = MyAdminSite(app_name='my_admin')
url(r'^admin/', include(my_admin.urls)),
Run Code Online (Sandbox Code Playgroud)
我该怎么扭转呢? some_view
django-cms始终使用最顶层的页面作为开始/登陆页面.我现在想要一个看起来像这个foo-home-bar的导航和home作为登陆页面.
一种方法是在/重定向到/ home添加一个虚拟页面,但这对我来说似乎有点粗糙.有没有更好的解决方案?我不介意改变cms本身的代码.
我有一个现有的 Django 项目。我想在其中使用 ReactJS,因为 React 使处理状态非常容易。我面临的问题是如何重用 Django 中已经定义的 URL 模板?
示例:主页/urls.py
urlpatterns=[
url(r'plot/api/(?P<plot_id>[0-9]+)?$', views.LivePlot.as_view(), name='livePlot'),
]
Run Code Online (Sandbox Code Playgroud)
如果我只使用 Django,我可以参考上面的 url,{% url 'Home:livePlot' plot_id %}其中 plot_id 是服务器传递的参数。
使用 React 时我无法利用相同的技术。有什么建议?我可以访问我的 React 代码中的 plot_id。
反应示例:
render: function() {
return(<div className="plot"><a href=''></a></div>);
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,在上面的示例中,我希望有一种方法可以{% url 'Home:livePlot' plot_id %}在锚标记的 href 属性中放置 或类似的东西,以便链接指向 example.com/plot/{plot_id}。
现在我使用的解决方法涉及自己构建 url。因此,如果我将此 react 组件放在 example.com/sub/sub2 中,我会将 url 构建为'../../plot' + plot_id. 当我将相同的 React 组件放在多个页面中时,这种方法会失败,例如 example.com/sub 和 example.com/sub/sub2 这正是我拥有的用例。
在 url 上运行测试返回 302 而不是 200。然而在生产中使用重定向测试器测试相同的 url 返回 200。不确定发生了什么。
测试.py
def test_detail(self):
response = self.client.get('/p/myproduct-detail.html')
self.assertEqual(response.status_code, 200)
Run Code Online (Sandbox Code Playgroud)
网址.py
url(r'^p/(?P<slug>[-\w\d]+).html$', main.views.product_detail,
name='product-detail'),
Run Code Online (Sandbox Code Playgroud)
视图.py
def product_detail(request, slug):
stuff...
return render(request, 'product-detail.html', {})
Run Code Online (Sandbox Code Playgroud)
如果我添加follow=True到client.get()我会按预期收到 200 个代码。
我正在尝试在 index.html 上显示由 new_measurement 定义的表单,但我只能设法开始IndexView()工作。我尝试了IndexView()和之间的各种组合new_measurement(),但这些都没有奏效。我知道这IndexView()不会传递任何与 相关的东西new_measurement(),new_measurement()也不会被调用,这是我问题的核心。如果有对 Django 更有经验的人能告诉我我能做什么或应该做什么,我将不胜感激。谢谢你。
这是我的views.py:
from django.shortcuts import render
from django.utils import timezone
from .models import Measurement
from .forms import MeasurementForm
from django.views import generic
class IndexView(generic.ListView):
model = Measurement
context_object_name = 'measurement_list'
template_name = 'index.html'
queryset = Measurement.objects.all()
def new_measurement(request):
if request.method == "POST":
form = MeasurementForm(request.POST)
if form.is_valid():
measurement = form.save(commit=False)
measurement.measurement_date = timezone.now()
measurement.save()
else:
form = MeasurementForm()
return …Run Code Online (Sandbox Code Playgroud) 我很难理解 app_name 和命名空间之间的联系。
考虑项目级别的 urls.py
from django.urls import path, include
urlpatterns = [
path('blog/', include('blog.urls', namespace='blog')),
]
Run Code Online (Sandbox Code Playgroud)
考虑应用级别(博客)urls.py
from django.urls import path
from . import views
app_name = 'blog'
urlpatterns = [
path('', views.post_list, name='post_list'),
path('<int:year>/<int:month>/<int:day>/<slug:post>/', views.post_detail, name='post_detail'),
]
Run Code Online (Sandbox Code Playgroud)
如果我注释掉 app_name,我会得到以下信息。
'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 …Run Code Online (Sandbox Code Playgroud) 我已经看过这个问题的其他答案,但我仍然无法弄清楚出了什么问题。
通常,有两个 urls.py - 一个在我的account文件夹中,另一个在我的bookmarks文件夹中,位于根文件夹中 - bookmarks。
当我尝试创建超级用户时,我得到以下信息:
django.core.exceptions.ImproperlyConfigured: The included URLconf '<module 'account.urls' from '/Users/aleksanderjess/Documents/PacktPub/Django/bookmarks/account/urls.py'>' does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import.
Run Code Online (Sandbox Code Playgroud)
我完全不知道为什么。进口看起来是合法的。
这里有两个 urls.py
account/urls.py:
from django.contrib.auth import views
from . import views
urls = [
path('login/', views.user_login, name='login'),
]
Run Code Online (Sandbox Code Playgroud)
然后是书签中的一个,如下所示:
from django.contrib import admin
from django.urls import path, include
from django.conf …Run Code Online (Sandbox Code Playgroud) 当include()从 Django 应用程序到项目的 urlconf 时urls.py,某种应用程序的名称(或命名空间)应指定为:
app_namespace在include((pattern_list, app_namespace), namespace=None)主urls.py或者
app_name应用程序中的变量urls.py。因为,我猜是 Django 2,第二种方法是首选方法,尽管我从 Django 3 文档中复制粘贴了第一个函数签名。但这不是重点。
我目前对namespace参数的理解include()是它是我在使用reverse().
app_namein app'surls.py或app_namespacein main的目的是什么urls.py?
这些是完全一样的吗?
Django 如何使用它?
我在这里找到的现有问题(和答案)解释了我应该如何指定它而不是为什么。
django ×10
django-urls ×10
python ×5
django-admin ×1
django-cms ×1
django-tests ×1
django-views ×1
python-3.x ×1
reactjs ×1
url ×1