小编Mar*_*sha的帖子

在 Django 管理中创建新的自定义视图

抱歉,我还是 Django 的新手。我想在管理站点上创建与我的模型无关的自定义视图。我已阅读文档(https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls),但不起作用。阅读一些教程也不起作用......这是我尝试过的:

管理文件

from django.contrib import admin
from django.urls import path
from .models import Question
from django.http import HttpResponse

class CustomAdminView(admin.ModelAdmin):
    def get_urls(self):
        urls = super().get_urls()
        my_urls = [
            path(r'^my_view/$', self.admin_site.admin_view(self.my_view))
        ]
        urls = my_urls + urls
        return urls


    def my_view(self, request):
        return HttpResponse("Hello, world.")


admin.site.register(Question)
Run Code Online (Sandbox Code Playgroud)

网址.py

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

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

当我去 admin/my_view 时,结果是 404 not found。

我也尝试过扩展 AdminView。

管理文件 …

python django

7
推荐指数
1
解决办法
5615
查看次数

为什么 angular 订阅多次?

我有这个结构:

  • 产品.服务(用于服务)
  • product-search 组件(用于设置当前选中的对象)
  • compare-product 组件(用于订阅当前选中的对象)

每当加载比较产品时,我都想订阅服务中的对象。乍一看还好。但是,当我点击产品搜索的后退按钮,然后再次加载比较产品时,它订阅了两次。当我再次返回加载时,它被调用了3次。返回,再次加载,调用四次,依此类推。

这些是代码:

服务:

//product.service
.......
private checkedSrc = new BehaviorSubject([]);
currentChecked = this.checkedSrc.asObservable();

.......
setChecked(checked: string[]){
    this.checkedSrc.next(checked);
}

resetChecked(){
    this.checkedSrc.next([]);
}
.......
Run Code Online (Sandbox Code Playgroud)

产品搜索组件:

......
compare(){
    this.products_valid = true;
    this.productSvc.setChecked(this.checked);
    this.router.navigate(['compare']);
}
......
Run Code Online (Sandbox Code Playgroud)

比较产品组件:

...
products: string[];
isLoading: boolean = true;

constructor(
  private productSvc: ProductsService
) { }

ngOnInit() {
  this.productSvc.currentChecked.subscribe(p => {this.products = p; console.log(this.products)})
}
Run Code Online (Sandbox Code Playgroud)

我在没有导航到比较组件的情况下尝试了它。当我第一次调用比较函数时,它订阅了一次,再次调用比较它订阅了两次,再次调用它订阅了三次,依此类推。

......
compare(){
    this.products_valid = true;
    this.productSvc.setChecked(this.checked);
    this.productSvc.currentChecked.subscribe(p =>{console.log(p);})
}
......
Run Code Online (Sandbox Code Playgroud)

调用它的按钮:

<div class="row">
  <div class="col-md-6">
    <button class="btn …
Run Code Online (Sandbox Code Playgroud)

rxjs angular

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

标签 统计

angular ×1

django ×1

python ×1

rxjs ×1