2010-02-26 13 views
5

Estoy creando un sitio de videos. Quiero que mis URL directas a un video se vean como example.com/watch/this-is-a-slug-1 donde 1 es la identificación del video. Aunque no quiero que la babosa importe. example.com/watch/this-is-another-slug-1 debe señalar a la misma página. En SO,/questions/id es la única parte de la url que importa. ¿Cómo puedo hacer eso?¿Cómo puedo hacer que las URL en Django sean similares a stackoverflow?

Respuesta

8

desbordamiento de pila utiliza la forma

example.com/watch/1/this-is-a-slug 

que es más fácil de manejar. Estás abriendo una lata de gusanos si quieres que la ID esté al final de la ficha de slug, ya que entonces (por ejemplo) restringirá los tipos de babosas que puedes usar o simplemente te hará más difícil.

Se puede utilizar un controlador de URL como:

(r'^watch/(?P<id>\d+)/', 'watch') 

a agarrar sólo el ID e ignoran nada después de la ID. (Tenga en cuenta que no hay $ carácter de fin de línea.)

+0

Hmm, gracias por ese consejo. ¿Sería difícil obtener la identificación si fuera example.com/watch/1-this-is-a-slug? Además, si estas preguntas parecen tontas, ¡lo siento! Este es el primer sitio que estoy desarrollando en realidad, en lugar de solo diseñar y diseñar. Gracias por tu ayuda. –

+0

@Matt, no sería tan difícil, pero ¿por qué quieres? Es una práctica bastante común hacer lo que hace Stack Overflow. –

+0

Sinceramente, no estoy seguro de por qué me gustaría hacer eso. Si/id/slug es aceptable, lo haré. Gracias de nuevo. –

-3

Con todo el respeto debido a Stackoverflow, esta es la forma incorrecta de hacerlo. No debería necesitar tener dos elementos en la URL que identifica la página. La identificación es irrelevante, es basura. Debería poder identificar de forma única una página solo de la babosa.

+4

¿Qué hay de los títulos duplicados? ¿O el hecho de que los personajes simplemente se eliminan de la babosa? Las preguntas tituladas "Punteros en C++" y "Punteros en C" obtendrían la misma babosa, y sería imposible crear una pregunta con un título existente, o la pregunta anterior sería inaccesible. El ID es el identificador único, y el slug es para ser humano/motor de búsqueda/etc. amigable. –

0

No he usado Django pero he usado frameworks MVC anteriormente. En general, tienen algún tipo de función de enrutamiento de URL que le permite definir un patrón (generalmente una expresión regular) que se asigna a un controlador.

Esto podría ser un buen punto de partida: http://docs.djangoproject.com/en/dev/topics/http/urls/

Como se dijo Jesse Beder, sólo se necesitaría la expresión regular para coincidir con el primer segmento de URL (/ reloj) y una identificación numérica, y luego hacia adelante que a un controlador de reloj, que trataría con la ID e ignoraría la babosa.

Cuestiones relacionadas