2017-02-01 2 views
-3

Я довольно новичок в django, и я работаю на веб-сайте, которому нужен динамический URL-адрес для таблицы базы данных, и все работает отлично, но я хотел бы знать, как удалить "? ID =" из URL, так что вместоУдалить «? Id =» из динамических URL-адресов

localhost:8000/dynamicurl/?id=XXXXX

URL-адрес становится

localhost:8000/dynamicurl/XXXXX

Вместо

я сделал сумму штрафа поиска в документации и Ждут» t найти много, хотя это довольно вероятно, что я что-то пропустил.

EDIT: спасибо всем за помощь, самый простой ответ должен был удалить объект, который я использовал для извлечения ID и просто заменить его на ID в Эверт, например,

поэтому мой URL стал

url(r'^dynamicurl/(?P[0-9]+)/$', views.dynamicurl)

и мой взгляд стал

def dynamicurl(request, id):

я, как очень очень новый Джанго FYI

+3

Из документации https://docs.djangoproject.com/en/1.10/topics/http/urls/#named -группы –

+0

И учебник. И каждый фрагмент вступительного текста, когда-либо написанного о Django. –

ответ

0

вы можете захватить переменную в определении url в файле urls.py приложения. Это будет выглядеть примерно так:

url(r'^dynamicurl/(?P<id>[0-9]+)?$', dynamicurl, name = 'dynamicurl'), 

затем в функции просмотра вы получите этот параметр:

def dynamicurl(request, id): 
+0

поэтому я попробовал ваше решение, и это не сработало, я думаю, что это из-за того, как я сделал вид, который должен был использовать idn = dinamicurl.request.GET.get (id = idn), чтобы найти ID объекта – YoungVenus

+0

вы публикуете свой код просмотра и определение URL? – turbotux

+0

Защиту тензодатчика (запрос): IDN = request.GET.get ('ID') если IDN: р = Pickoff.objects.get (ID = IDN) это то, что это было до изменения а url был url (r '^ pickoff /', views.pickoff) – YoungVenus

0

Если вы говорите о том, как изменить свой адрес внутри urls, я предлагаю вам использовать код, который уже ответил выше: https://stackoverflow.com/a/41988051/6396981

Но, если вы говорите о том, как перенаправить localhost:8000/dynamicurl/?id=XXXXX на localhost:8000/dynamicurl/XXXXX, надеюсь, что это полезно ..

1. views.py

from django.http import HttpResponse 
from django.views.generic.base import RedirectView 
from django.core.urlresolvers import reverse 


class RedirectView(RedirectView): 
    permanent = False 

    def get_redirect_url(self): 
     get_id = self.request.GET.get('id') 
     if get_id is not None: 
      return reverse('redirected_page', kwargs={'id': id}) 
     return reverse('origin_page') 


def redirected_view(request, id): 
    # your final view goes here... 
    return HttpResponse("You're looking for id: %d." % id) 

2. urls.py

from django.conf.urls import url 
from yourapp.views import views (RedirectView, redirected_view) 


urlpatterns = [ 
    # first view the pool to doing redirection 
    url(r'^pool/$', RedirectView.as_view(), name='origin_page'), 

    # the final url 
    url(r'^pool/(?P<id>[\d]+)/$', redirected_view, name='redirected_page'), 
] 
Смежные вопросы