Das brauche ich bestimmt nochmal: Einen View machen, der etwas anderes heraussucht, in diesem Fall eine Ressource. Der erste Versuch war, in der Methode einfach die Ressource rauszusuchen und dann zurückzuliefern – das klappt nicht, weil der ZPublisher versucht, weiterzutraversieren. Daher hier die Methode, den “TraversalRequestNameStack” vor der Rückgabe zu löschen.

class ResourceView(Explicit):
    """
    Simple view redirecting to Resources. Ok, not as simple as thought, but works.
    """

    def __before_publishing_traverse__( self, obj, request=None ):
        if self.request['TraversalRequestNameStack']:
            self.request.form['resource'] = self.request['TraversalRequestNameStack']
            self.request['TraversalRequestNameStack'] = []
        else:
            pass

    def nozope(self):
        self.request.form['resource'].reverse()
        resourcepath = '/'.join(['++resource++nozope']+self.request.form['resource'])
        obj = self.context.unrestrictedTraverse(resourcepath).__of__(self)
        method = obj.__browser_default__(self.request)[1][0]
        return getattr(obj, method)()