学习http://www.ianlewis.org/en/reversing-django-admin-urls后记录(翻译了部分)
Django 1.1开始支持 reversing django admin urls 与specifying custom admin views功能
代码如下:
class ItemAdmin(admin.ModelAdmin):
list_display = ('title', 'date','published')
exclude = ['clean_content',]
list_filter = ('feed',)
search_fields = ('title','clean_content')
list_per_page = 20
model = Item
def save_model(self, request, obj, form, change):
obj.clean_content = strip_tags(obj.content)
obj.save()
def admin_update_feeds(self, request):
from lifestream.feeds import update_feeds
#TODO: Add better error handling
update_feeds()
return HttpResponseRedirect(
reverse("admin:lifestream_item_changelist")
)
def get_urls(self):
from django.conf.urls.defaults import *
urls = super(ItemAdmin, self).get_urls()
my_urls = patterns('',
url(
r'update_feeds',
self.admin_site.admin_view(self.admin_update_feeds),
name='admin_update_feeds',
),
)
return my_urls + urls
admin.site.register(Item, ItemAdmin)
关键的部分是get_urls函数与admin_update_feeds view.get_urls函数用于增加自定义的url.自定义admin_update_feeds视图函数用于更新lifestream的feeds,并重定向到item的修改列表视图.为了获取这个目标url,使用了reverse()函数,反向解析"admin:lifestream_item_changelist(模式为"<namespace>:<app>_<model>_changelist"),来获取对应的url.
模板:
通过重载默认的admin template,创建了一个按钮,用于更新feeds.模板如下:
{% extends "admin/change_list.html" %}
{% load adminmedia admin_list i18n %}
{% block object-tools %}
{% if has_add_permission %}
<ul class="object-tools">
<li><a href="{% url admin:admin_update_feeds %}">{% blocktrans with cl.opts.verbose_name|escape as name %}Update Items{% endblocktrans %}</a></li>
<li><a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink">{% blocktrans with cl.opts.verbose_name|escape as name %}Add {{ name }}{% endblocktrans %}</a></li>
</ul>
{% endif %}
{% endblock %}
这里使用{% url admin:admin_update_feeds %}来获取自定义视图函数的url.
分享到:
相关推荐
本文将详细分析Django框架URL反向解析的具体原理与应用操作技巧,并提供实例来说明。 首先,我们需要理解Django中的URL配置。在Django项目的urls.py中,我们定义了项目的URL路由配置,如下所示: ```python from ...
URL反向解析 除了在模板中使用`url`模板标签,还可以在视图和Python代码中使用`reverse()`函数来获取URL,这有助于保持URL模式和其引用的一致性。 ### 10. 结论 Django的路由系统是其强大功能的一个关键方面,它...
使用`django-admin startproject`命令创建一个新的Django项目。理解项目目录结构,包括manage.py、settings.py、urls.py等关键文件的作用。 3. Django应用创建 在项目中创建应用,如`python manage.py startapp ...
2. **创建项目** - 使用`django-admin startproject project_name`命令创建一个新的Django项目,其中`project_name`替换为你的项目名。 3. **配置项目** - 修改`settings.py`文件,添加需要的应用,设置数据库和...
首先,通过`django-admin startproject mysite`命令创建项目,接着可以使用`python manage.py startapp appname`创建应用,如`user_management`,用于实现用户管理功能。 ### 4. 数据库管理 Django的ORM允许开发者...
通过pip安装Django,并创建一个新的项目,使用`django-admin startproject blog_project`命令。接着,创建一个名为"Django-Blog"的应用,运行`python manage.py startapp Django-Blog`。 2. **数据库模型(Model)*...
在`views.py`中,定义视图函数,然后在`urls.py`中配置URL模式,将URL映射到相应的视图。 8. **模板系统**:Django的模板系统用于生成HTML响应。在`templates`目录下,创建HTML模板文件,使用模板语言来动态渲染...
- 命名后的URL可以通过`reverse()`函数反向解析,如`reverse('my_view')`。 4. **参数传递** - URL模式可以包含捕获组,以从URL中提取参数传递给视图。例如: ```python path('<int:pk>/', viewsDetailView.as_...
在这个例子中,`admin.site.urls`包含了Django管理站点的URL,而`app1.urls`和`app2.urls`分别对应应用`app1`和`app2`的URL配置。 **3.3 URL参数传递** 在URL模式中,可以使用变量来捕获URL路径的一部分,这些变量...
2. **创建项目**:使用`django-admin startproject project_name`命令创建一个新的Django项目。 3. **创建应用**:在项目目录下,使用`python manage.py startapp app_name`创建一个应用。 4. **设置模型**:在...
9. 自定义管理界面:Django的内置admin界面允许开发者轻松管理模型实例。通过注册模型并自定义管理类,可以创建一个定制化的后台管理系统,方便对博客内容进行维护。 10. 测试与调试:Django提供了一套强大的测试...
Django项目的结构通常包括管理目录、应用目录、settings.py(配置文件)、urls.py(URL路由)、wsgi.py(WSGI服务器接口)等。理解这些文件的作用是使用Django的基础。 4. 模型(Models): 模型是数据库的抽象层...
Django采用模型-视图-控制器(MVC)架构模式,其核心组件包括模型(Models)、视图(Views)、模板(Templates)和URL路由(URLs)。在构建人脸识别登录系统时,我们将创建一个模型来存储用户信息,视图来处理请求和...
模板使用Django模板语言(DTL)来展示数据,可以包含变量、控制结构(如for循环和if语句)以及模板标签(如`{% url %}`用于URL反向解析)。 4. **URL路由(URLconfs)**:`learning_log/urls.py`定义了URL模式,每...
这里使用了 Django 的 URL 反向解析语法 `{% url '命名空间:视图名称' %}`。 ### 内容扩展:Django 项目下创建多个 App 在实际开发过程中,随着项目复杂度的增加,可能会涉及到更多的 App。为了更好地组织项目结构...
2. **Django项目创建**:使用`django-admin startproject`命令初始化项目,然后创建一个Django应用,如`facedetection`,用于存放我们的核心代码。 3. **API接口设计**:在Django应用中,定义一个视图函数来处理...
- **name**:用于反向解析URL的名称。 **2.4 常用命令** - **查看Django版本**:`python -m django --version` - **创建应用**:`python manage.py startapp polls`。这会在当前项目目录下创建一个名为`polls`的...
4. **数据库模型**:在user_manager应用的models.py文件中,定义用户模型,比如UserProfile,继承自Django的AbstractBaseUser或AbstractUser,以自定义用户字段和行为。 5. **注册模型**:在user_manager应用的...
创建一个Django项目的第一步是安装Django库,然后通过`django-admin startproject HealthCareSys`命令来初始化项目。这将生成一个包含基本目录结构的项目,如`manage.py`、`settings.py`、`urls.py`等文件。 三、...
本文将围绕“Django渗透测试与代码安全”这一主题展开,探讨如何确保Django应用的安全性。 首先,安装Django非常简单,只需通过Python的包管理器pip执行`pip install django`即可。一旦安装完毕,就可以创建一个新...