2012-08-22 19 views
6

que estoy tratando de hacer un poco de coincidencia de URL Django.Django URLS, usando a? en la URL

Quiero un par de direcciones URL donde he http://mysite.com/base?sort=type1/, http://mysite.com/base?sort=type2/, etc.

no puedo encontrar la manera de URL que coincida con estas expresiones: No soy muy nuevo en Django y nunca utilizado Reg Ex antes.

lo que tengo para urls.py en mi "base" de aplicación es:

url(r'^$','base.views.main, name='main'), 

no puedo averiguar qué poner para que coincida con mis URL con signos de interrogación.

estoy intentando algo así como

url(r'^?sort=popular/$', 'base.views.main_popular', name='main_popular'), 

Gracias por la ayuda!

Respuesta

6

? no coincidirá con un "?" dentro de la url, en cambio tiene su propio significado que puede buscar aquí:
Python Regular Expressions Si quiere hacer coincidir el carácter exacto de "?" dentro de su url, tiene que escapar de alguna manera (porque tiene un significado en RegExs) por lo que puede escapar con un "\" (una barra invertida) para escribir \? ordenar ....

EDITAR:
Bien, entonces con lo que ha dicho en los comentarios, parece que este es su problema, main?sort=popular aparece en su patrón de URL cuando está procesando la plantilla /main/ con el argumento GET del diccionario de métodos, simplemente escriba una función que distinga GET y POST, en la parte GET, tener algo como sort_by = request.GET.get('sort','') y luego ordenar en consecuencia con el valor de la variable de sort_by, sería algo así como:

def main_handler(request): 
    if request.method == "POST": 
      whatever ... 
    if request.method == "GET" : 
      sort_by = request.GET.get('sort','') 
      if sort_by: 
       sort by what sort points to 
       return "the sorted template" 
    return render_to_response(the page and it's args) 

y dejar ir eso? dentro del patrón de url, se agrega cuando solicita una página con un argumento GET.

+0

Intenté hacer esto, desafortunadamente no funcionó, no estoy muy seguro de por qué. – deakolt

+0

¿Podría publicar ese código también? pero en realidad, parece tan extraño tener un signo de interrogación al comienzo de una url (sort = popular) – SpiXel

+0

Bueno, en esencia, tengo una página web, con contenido que se puede ordenar según el género. main? sort = tipo popular de implica que todavía estás en la página principal, vs main/popular/que tipo de implica una página diferente. Yo estaba usando url (r '^ \? Sort = populares/$', 'base.views.main_popular', name = 'main_popular') – deakolt

7

no hace coincidir éstos contra la expresión regular. Los elementos después de la ? no son parte de la URL, que son los parámetros de consulta que puede accederse desde su punto de vista a través de request.GET.

+0

Ahh soy tan importante para la programación web, gracias-- – deakolt

Cuestiones relacionadas