URL を に向けようとするとhttp://localhost:6543/admin/product/50b0d01ce815af3c4167040e/edit
、どういうわけか 404 エラーが表示されます。どこかで私の見解が間違っていると信じていますが、何度も試しても何が悪かったのかわかりません。
の内容resources.py
:
from pyramid.security import Authenticated
from pyramid.security import Allow
from pyramid.response import Response
class Root(object):
__name__ = ''
__parent__ = None
def __init__(self, request):
pass
def __getitem__(self, key):
if key == 'admin_login':
return Admin()
elif key == 'admin':
return Admin()
raise KeyError
class Admin(object):
__name__ = ''
__parent__ = Root
__acl__ = [
(Allow, Authenticated, 'admin')
]
def __init__(self):
pass
def __getitem__(self, key):
if key == 'product':
print ('admin: ' , key)
return Product()
if key == 'category':
print ('admin: ' + key)
return Category()
raise KeyError
class Product(object):
__name__ = ''
__parent__ = Admin
__acl__ = [
(Allow, Authenticated, 'admin')
]
def __init__(self):
pass
def __getitem__(self, key):
if key :
return ProductName(key)
print ('Approaching KeyError: ', key)
raise KeyError
class ProductName(object):
__parent__ = Product
__acl__ = [
(Allow, Authenticated, 'admin')
]
def __init__(self, _str):
self.__name__ = _str;
self.__parent__ = Settings;
print ('ProductName: ' + _str)
pass
の内容views/admin.py
:
@view_config(context='mycart:resources.Product', renderer='post.jinja2')
@view_config(context='mycart:resources.ProductName', name='edit', renderer='admin/settings/commissions.jinja2', permission = 'admin')
print (' in product edit? ')
return {'msg': 'yay editing!'}
ソースコードにいくつかの変更を加えました。http://localhost:6543/admin/product
確実に機能しています。http://localhost:6543/admin/product/add
ただし、現在はレイアウトが表示されておらず、レイアウトも表示されていないようhttp://localhost:6543/admin/product/YYYY/edit
です。
の内容views/admin.py
:
@view_config(context='mycart:resources.ProductName', name='edit', renderer='admin/product/test.jinja2', permission = 'admin')
def product_edit(context, request):
print 'edit here?'
return { 'msg': '<div class="alert alert-success">Product Edit!</div>'}
@view_config(context='mycart:resources.ProductName', name='add', renderer='admin/product/test.jinja2', permission = 'admin')
def product_add(context, request):
print 'add in here?'
return { 'msg': '<div class="alert alert-success">Product Add</div>'}
@view_config(context='mycart:resources.ProductName', name="add" , request_method="POST", renderer='admin/product/add.jinja2', permission = 'admin')
def product_add_post(context, request):
return { 'msg': '<div class="alert alert-success">Product Added Successfully!</div>'}
@view_config(context='mycart:resources.Product', name='', renderer='admin/product/list.jinja2', permission = 'admin')
def product_list(context, request):
return { 'msg': '<div class="alert alert-success">Listing of products</div>'}
の内容resources.py
:
from pyramid.security import Authenticated
from pyramid.security import Allow
from pyramid.response import Response
class Root(object):
__name__ = __parent__ = None
def __init__(self, request):
pass
def __getitem__(self, key):
if key == 'admin_login':
return Admin()
elif key == 'admin':
return Admin()
raise KeyError
class Admin(object):
__name__ = ''
__parent__ = Root
__acl__ = [
(Allow, Authenticated, 'admin')
]
def __init__(self):
pass
def __getitem__(self, key):
if key == 'product':
return Product()
#if key == 'category':
# return Category()
raise KeyError
class Product(object):
__name__ = ''
__parent__ = Admin
__acl__ = [
(Allow, Authenticated, 'admin')
]
def __init__(self):
print ('Product() self _name: ' , self.__name__, ' parent: ', self.__parent__)
pass
def __getitem__(self, key):
print ('product: ' , key)
if key:
print ('key is true: ' , key)
return ProductName(key)
raise KeyError
class ProductName(object):
__name__ = ''
__acl__ = [
( Allow, Authenticated, 'admin')
]
def __init__(self, _key):
p = Product()
p.__name__ = _key
p.__parent__ = self
print ( 'ProductName() init: ', _key)
print ( p.__parent__)
print ( p.__name__)
print ('\n\n')
pass
def __getitem__(self, _key):
print ( 'ProductName() __get__item key: ', _key)
if _key == 'edit':
p = Product()
p.__name__ = _key
p.__parent__ = self
print ('ProductName()->edit parent: ')
print ( p.__parent__)
print ( p.__name__)
print ('\n\n')
return p
raise KeyError
コンソールで、URL を にポイントするhttp://localhost:6543/admin/product/add
と、出力は次のようになります。
< mycart.resources.ProductName object at 0x10abb7990 >
add
しかし、404エラーが表示されているので、views/admin.py
どこか間違っているのではないでしょうか? view_config の順序を切り替えてみましたが、役に立ちませんでした:
@view_config(context='mycart:resources.ProductName', name='add', ... )
....
@view_config(context='mycart:resources.ProductName', name='edit', ... )
次の url: を使用して編集する場合http://localhost:6543/admin/vendor/50b0d01ce815af3c4167040e/edit
、コンソール出力は次のようになります。
< mycart.resources.ProductName object at 0x10abb4bd0 >
edit
したがって、私のコンテキストでは、context='mycart:resources.ProductName' を使用し、名前セットを編集する必要があることを知っています。ただし、で設定した編集メッセージがコンソールに表示されませんviews/admin.py
。
どこで間違ったのでしょうか?