Generating URL using request.resource_url

24 views
Skip to first unread message

Sydo Luciani

unread,
Apr 22, 2020, 3:42:44 AM4/22/20
to pylons-discuss
This code:
href="{{ request.resource_url(request.root, request.path , '@@create') }}">

Generates below URL:

After domain_name:port, there is a '/' and a '%2F' which represents another '/'.
double slashes after domain name, causing problem in finding the right view
and the result is "page not found".

Is there a workaround this problem ?

Thanks


Steve Piercy

unread,
Apr 22, 2020, 4:08:57 AM4/22/20
to pylons-...@googlegroups.com
See:
https://docs.pylonsproject.org/projects/pyramid/en/latest/api/request.html#pyramid.request.Request.resource_url

It's not clear what you want to be the resource (the first
argument): root or root + path? Subsequent args are joined by `/`.

The link to the docs above should give you plenty of options to
find what you want.

--steve


On 4/22/20 at 12:42 AM, sydo.l...@gmail.com (Sydo Luciani) pronounced:

>This code:
>href="{{ request.resource_url(request.root, request.path , '@@create') }}">
>
>Generates below URL:
>https://domain_name.com:6543/%2FDir_1%2FDir_2/@@create <https://systematicd.com:6543/%2Fwiki%2FDir_2/@@create>
>
>After domain_name:port, there is a '/' and a '%2F' which
>represents another '/'.
>double slashes after domain name, causing problem in finding
>the right view and the result is "page not found".
>
>Is there a workaround this problem ?
>
>Thanks
>
>

------------------------
Steve Piercy, Eugene, OR

Sydo Luciani

unread,
Apr 22, 2020, 5:11:00 AM4/22/20
to pylons-discuss
tried
href="{{ request.resource_url(request.url , '@@create') }}">
but didn't work and got below error:
    path = [loc.__name__ or '' for loc in lineage(resource)]
AttributeError: 'str' object has no attribute '__name__'

Then tried
href="{{ request.resource_url(request.root, request.path , '@@create') }}">
that I got double slash problem.

Need to generate full URL and then append @@create.






root, request.path , '@@create') }}">

Sydo Luciani

unread,
Apr 22, 2020, 5:18:25 AM4/22/20
to pylons-discuss
root + path be the resource but passing request.url as resource throws error:
href="{{ request.resource_url(request.url , '@@create') }}">

   path = [loc.__name__ or '' for loc in lineage(resource)]
AttributeError: 'str' object has no attribute '__name__'


Steve Piercy

unread,
Apr 22, 2020, 7:39:46 AM4/22/20
to pylons-...@googlegroups.com
Are you using traversal or URL dispatch?

It seems that you don't want to pass in a `resource` as the
first argument to `resource_url`, so perhaps you want to use
https://docs.pylonsproject.org/projects/pyramid/en/latest/api/request.html#pyramid.request.Request.route_url
?

--steve


On 4/22/20 at 2:18 AM, sydo.l...@gmail.com (Sydo Luciani) pronounced:

>root + path be the resource but passing request.url as resource
>throws error:
>href="{{ request.resource_url(request.url , '@@create') }}">
>
>path = [loc.__name__ or '' for loc in lineage(resource)]
>AttributeError: 'str' object has no attribute '__name__'
>
>
>On Wednesday, 22 April 2020 04:11:00 UTC-5, Sydo Luciani wrote:
>>
>>tried href="{{ request.resource_url(request.url , '@@create') }}">
>>but didn't work and got below error:
>>path = [loc.__name__ or '' for loc in lineage(resource)]
>>AttributeError: 'str' object has no attribute '__name__'
>>
>>Then tried href="{{ request.resource_url(request.root,
>>request.path , '@@create') }}">
>>that I got double slash problem.
>>
>>Need to generate full URL and then append @@create.
>>
>>
>>
>>
>>
>>
>>root, request.path , '@@create') }}">
>>On Wednesday, 22 April 2020 02:42:44 UTC-5, Sydo Luciani wrote:
>>>
>>> This code:
>>> href="{{ request.resource_url(request.root, request.path ,
>>>'@@create') }}">
>>>
>>> Generates below URL:
>>> https://domain_name.com:6543/%2FDir_1%2FDir_2/@@create <https://systematicd.com:6543/%2Fwiki%2FDir_2/@@create>
>>>
>>> After domain_name:port, there is a '/' and a '%2F' which
>>>represents another '/'.
>>> double slashes after domain name, causing problem in
>>>finding the right view and the result is "page not found".
>>>
>>> Is there a workaround this problem ?
>>>
>>> Thanks
>>>
>>>
>>>
>

Message has been deleted

Sydo Luciani

unread,
Apr 22, 2020, 5:05:22 PM4/22/20
to pylons-discuss
Back to my original post, fixed the problem with stripping leading slash in request.path in jinja template:
{% set stripped_path = request.path | replace("/", "", 1) %}

And then passed stripped_path to request.resource_url:
href="{{ request.resource_url(request.root, stripped_path, '@@create') }} ">

Please let me know if there is more elegant(Pyramid) way solution.


On Wednesday, 22 April 2020 11:01:22 UTC-5, Sydo Luciani wrote:
Application is using hybrid of traversal and URL dispatch.
Here is the code:

currently application working fine, but using session to save and passing around
the coming_from_url or next_url is problematic in browsing application in multi tabs.
here is the code that needs to be changed.

With appending the @@create to the end of full url, then traversed url always
stay the same after clicking on create button and no need to save the url in session.

Checking document for generating hybrid:

it is not clear how to generate the current application full url.


Thanks


On Wednesday, 22 April 2020 06:39:46 UTC-5, Steve Piercy wrote:
Are you using traversal or URL dispatch?

It seems that you don't want to pass in a `resource` as the
first argument to `resource_url`, so perhaps you want to use
https://docs.pylonsproject.org/projects/pyramid/en/latest/api/request.html#pyramid.request.Request.route_url
?

--steve


On 4/22/20 at 2:18 AM, sydo....@gmail.com (Sydo Luciani) pronounced:

Bert JW Regeer

unread,
Apr 23, 2020, 12:27:57 AM4/23/20
to Pylons Project
Pass the current context. It should have lineage and thus know how to get to where you are right now.

request.resource_url(request.context, '@@create')

Bert JW Regeer

-- 
You received this message because you are subscribed to the Google Groups "pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pylons-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pylons-discuss/59678cc3-6d83-41f7-85b6-fe77bbe081f5%40googlegroups.com.

Steve Piercy

unread,
Apr 23, 2020, 1:31:50 AM4/23/20
to pylons-...@googlegroups.com
Further reading, from the sidebar in the Traversal chapter, "The
Example View Callables Accept Only a Request; How Do I Access
the Context Resource?":
https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/traversal.html

In view callables that accept only a request, the context
resource found by
traversal is available as the context attribute of the
request object,
e.g., ``request.context``.

That chapter is gold for all things traversal, including
twenty-seven eight-by-ten color glossy pictures with the circles
and arrows and the paragraph on the back of each one.

--steve


On 4/22/20 at 9:27 PM, xist...@0x58.com (Bert JW Regeer) pronounced:
>hybrid-urls <https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/hybrid.html#generating-
>hybrid-urls>
>>
>>it is not clear how to generate the current application full url.
>>
>>
>>Thanks
>>
>>
>>On Wednesday, 22 April 2020 06:39:46 UTC-5, Steve Piercy wrote:
>>Are you using traversal or URL dispatch?
>>It seems that you don't want to pass in a `resource` as the
>>first argument to `resource_url`, so perhaps you want to use
>https://docs.pylonsproject.org/projects/pyramid/en/latest/api/request.html#pyramid.request.
>Request.route_url <https://docs.pylonsproject.org/projects/pyramid/en/latest/api/request.html#pyramid.request
>.Request.route_url>
>>?
>>--steve
>>
>>On 4/22/20 at 2:18 AM, sydo....@gmail.com <> (Sydo Luciani) pronounced:
>>>root + path be the resource but passing request.url as
>>>resource throws error: href="{{
>>>request.resource_url(request.url , '@@create') }}">
>>>path = [loc.__name__ or '' for loc in lineage(resource)]
>>>AttributeError: 'str' object has no attribute '__name__'
>>>
>>>On Wednesday, 22 April 2020 04:11:00 UTC-5, Sydo Luciani wrote:
>>>> tried href="{{ request.resource_url(request.url ,
>>>>'@@create') }}"> but didn't work and got below error: path =
>>>>[loc.__name__ or '' for loc in lineage(resource)]
>>>>AttributeError: 'str' object has no attribute '__name__'
>>>>Then tried href="{{ request.resource_url(request.root,
>>>>request.path , '@@create') }}"> that I got double slash
>>>>problem. Need to generate full URL and then append
>>>>@@create. root, request.path , '@@create') }}"> On
>>>>Wednesday, 22 April 2020 02:42:44 UTC-5, Sydo Luciani wrote:
>>>>> This code: href="{{ request.resource_url(request.root,
>>>>>request.path , '@@create') }}"> Generates below URL: https://domain_name.com:6543/%2FDir_1%2FDir_2/@@create
><https://domain_name.com:6543/%2FDir_1%2FDir_2/@@create>
><https://systematicd.com:6543/%2Fwiki%2FDir_2/@@create <https://systematicd.com:6543/%2Fwiki%2FDir_2/@@create>>
>>>>> After domain_name:port, there is a '/' and a '%2F'
>>>>>which represents another '/'. double slashes after
>>>>>domain name, causing problem in finding the right view
>>>>>and the result is "page not found". Is there a workaround
>>>>>this problem ? Thanks
>>>
>>
>>------------------------ Steve Piercy, Eugene, OR
>>
>>--
>>You received this message because you are subscribed to the Google Groups
>"pylons-discuss" group.
>>To unsubscribe from this group and stop receiving emails from it, send an email to
>pylons-discus...@googlegroups.com <mailto:pylons-discus...@googlegroups.com>.
>40googlegroups.com <https://groups.google.com/d/msgid/pylons-discuss/59678cc3-6d83-41f7-85b6-fe77bbe081f5%
>40googlegroups.com?utm_medium=email&utm_source=footer>.

Antonio Beamud Montero

unread,
Apr 23, 2020, 12:33:54 PM4/23/20
to pylons-...@googlegroups.com
El 23/4/20 a las 7:31, Steve Piercy escribió:
Further reading, from the sidebar in the Traversal chapter, "The Example View Callables Accept Only a Request; How Do I Access the Context Resource?":
https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/traversal.html

Hi all, this page is raising a 403 Forbidden Error... Any problems with the server?

Greetings.

Sydo Luciani

unread,
Apr 23, 2020, 1:57:19 PM4/23/20
to pylons-...@googlegroups.com
Apparently Pylon project hosted by Cloudflare and Cloudflare seems having problem.

To unsubscribe from this group and stop receiving emails from it, send an email to pylons-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pylons-discuss/3a646780-cb0c-6b60-9e06-4ffd0c5ed6c3%40gmail.com.
Reply all
Reply to author
Forward
0 new messages