标签: django-urls

如何在Django URL模式中使用十进制数?

我想在Django URL模式中使用带小数点的数字,但我不确定它是否真的可行(我不是正则表达式专家).

这是我想要用于URL的内容:

/item/value/0.01
/item/value/0.05
Run Code Online (Sandbox Code Playgroud)

这些网址会显示价值0.01美元或0.05美元的商品.当然,我可以采取简单的方法,并以美分传递值,因此它将是/ item/value/1,但我希望在我的视图中接收作为十进制数据类型而不是整数的参数(和我可能不得不在某个时候处理一小部分分数).是否可以在Django URL模式中编写一个可以处理此问题的正则表达式?

python regex django django-urls

8
推荐指数
2
解决办法
8210
查看次数

Django:站点范围的URL前缀

我已经构建了一个Django站点,它将在它生存时存在于根目录中.现在它在IP地址上运行良好.出于测试目的,客户端已指向其中的代理URL,但URL中包含/ folder/path,因此没有任何URL模式匹配.我把(/ folder/path)?所有的url模式,所以他们现在响应,但所有链接都被破坏,因为我使用{%url%}标记,而url模式将匹配可选路径,他们不包括在该标记中.

显然,我可以硬编码/文件夹/路径到我的所有网址(好吧,进入所有网址包括),直到测试完成,但是有更好的方法吗?

django django-urls

8
推荐指数
1
解决办法
4062
查看次数

当WSGIScriptAlias是/ PREFIX时,Django localeURL

介绍

我对localeURL用法有疑问.对于我来说,一切都很棒,如下所示:http: //www.example.com/

问题

但我的应用程序使用apache作为服务器,使用mod_wsgi.httpd.conf脚本包含以下行:

WSGIScriptAlias /MY_PREFIX /path/to/django/app/apache/django.wsgi
Run Code Online (Sandbox Code Playgroud)

给出这样的网址:http:
//www.example.com/MY_PREFIX/

change_locale视图出现了同样的问题.我修改了这段代码以便管理这个前缀(存储在settings.SERVER_PREFIX中):

    def change_locale(request) :
    """
    Redirect to a given url while changing the locale in the path
    The url and the locale code need to be specified in the
    request parameters.
    O. Rochaix; Taken from localeURL view, and tuned to manage :            
        - SERVER_PREFIX …
Run Code Online (Sandbox Code Playgroud)

python django mod-wsgi django-urls django-wsgi

8
推荐指数
1
解决办法
1659
查看次数

{%url%}给我NoReverseMatch错误,而reverse()返回url就好了.为什么?

我不知道这个问题是否与我将描述的问题相同,但它确实有相同的症状.不幸的是,在我写作时它仍然没有得到解决.

所以这是我的问题.我正在尝试将James Bennett的django-registration应用程序添加到我的django项目中.我已经完成了根据我的需求配置它 - 自定义模板和网址.就在我认为一切都很好的时候.我在NoReverseMatch使用django-registration所需的自定义模板之一时遇到了错误{% url 'testing' item_id=123 %}(我也尝试使用视图名称,myapp.views.test而不是运气).有趣的是,我尝试reverse('testing', kwargs={'item_id':123})在shell中,网址也很好.我认为在后端{% url %}使用reverse()但为什么我会得到不同的结果?

urls.py :(我网站的URLconf)

urlpatterns = patterns('myapp.views',
    url(r'^test/(?P<item_id>\d+)/$', 'test', name='testing'),
)
Run Code Online (Sandbox Code Playgroud)

activation_email.txt :(所说的模板.请注意它是django-registration所要求的.txt扩展名中的故意,这不应该是问题的原因.)

{% comment %}Used to generate the body of the activation email.{% endcomment %}
Welcome to {{ site }}! Please activate your account by clicking on the following link:

{% url 'testing' item_id=123 %}

Note the activation link/code …
Run Code Online (Sandbox Code Playgroud)

django django-urls django-registration django-1.4

8
推荐指数
1
解决办法
2954
查看次数

django中的urls.py正则表达式评估顺序是什么?

我在urls.py中使用正则表达式时遇到了一些问题(我是django的初学者以及一般的正则表达式)

这是我原来的urls.py

url(r'^name/(?P<name>\w+)/$', 'course.views.name'),
url(r'^', 'course.views.index'),
Run Code Online (Sandbox Code Playgroud)

我试图使用这个来访问它:

http://127.0.0.1:8000/name/blah/
Run Code Online (Sandbox Code Playgroud)

我的观点如下:

def index(request):
    return HttpResponse("Hello, sam. You're at the course index.")

def name(request, name):
    return HttpResponse("Hello, %s. You're at the course index." % name)
Run Code Online (Sandbox Code Playgroud)

我得到的结果是,无论我给出什么输入,我都会定期获得"索引"功能,而不是"名称"功能.我认为问题出在第一个正则表达式上.

但后来,我把第二个改为:

url(r'^$', 'course.views.index'),
Run Code Online (Sandbox Code Playgroud)

而这正是我认为它工作的方式!

我知道"$"表示行尾,但是第一个正则表达式是不是已经被评估过了?这些表达式匹配的顺序是什么?

在每个网址上添加"$"并不是什么大不了的事,但我想理解为什么要把它放在那里.

我正在使用Django1.4和Python 2.7

python regex django-urls

8
推荐指数
1
解决办法
2720
查看次数

具有多个名称的URL模式

是否可以为一个URL模式定义多个名称?我想合并两个视图,而没有找到每个视图的所有引用并更改它们.保留这两个名字的另一个好处是以防我以后想要再次拆分它们.

例如,合并

url(r'^login/', TemplateView.as_view(template_name='login.html'), name='login'),
url(r'^profile/', TemplateView.as_view(template_name='profile.html'), name='profile'),
Run Code Online (Sandbox Code Playgroud)

url(r'^profile/', TemplateView.as_view(template_name='profile.html'), name=('login', 'profile')), #???
Run Code Online (Sandbox Code Playgroud)

django django-urls

8
推荐指数
1
解决办法
843
查看次数

如何在Django中使用urls.py中的变量重定向url模式?

我想来自的变量重定向url模式urls.py.

我引用 其他stackoverflow解决方案,但我不知道什么时候url有一个变量,如下面的代码.

from django.conf.urls import patterns, url
from django.views.generic import RedirectView


urlpatterns = patterns(
    url(
        r'^permalink/(?P<id>\d+)/foo/$',
        RedirectView.as_view(url='/permalink/(?P<id>\d+)/')
    ),
)
Run Code Online (Sandbox Code Playgroud)

使用此代码,django将重定向/permalink/1/foo//permalink/(?P<id>\d+)/,而不是/permalink/1/.

没有使用的views.py解决方案?

当然我知道使用控制器的解决方案,但我想知道使用url模式是否有任何更简单的解决方案.

python django django-urls url-redirection

8
推荐指数
1
解决办法
3999
查看次数

Django - 获取反转url所需的参数名称

背景

假设我有一个带有参数的url模式,它会将我链接到django中的视图:

url(
    r'^things/(?P<thing_name>\w+)/features/(?P<feature_name>\w+)$',
    views.thingFeature,
    name='thing_feature'
),
Run Code Online (Sandbox Code Playgroud)

让我们说我有一个thing和一个feature:

thing = Thing.objects.get(.....)
feature = thing.feature_set.first()

t_name = thing.name
f_name = feature.name
Run Code Online (Sandbox Code Playgroud)

现在Django给了我很棒的能力来获取一个网址,它将我带到一个专门针对特定事物的特定功能的页面.我可以这样做:

from django.core.urlresolvers import reverse
url = reverse('thing_feature', thing_name=t_name, feature_name=f_name)
# url == '/things/thing2/features/left-arm'
Run Code Online (Sandbox Code Playgroud)

现在我偶然发现了一个我需要专门解决的问题.我不是在寻找解决方法 - 我正在寻找解决以下问题:

给定一个url name,如何获取kwarg反转该url所需的参数名称列表?

我正在寻找这个功能get_kwarg_names_for_url.它的行为如下:

url_kwarg_names = get_kwarg_names_for_url('thing_feature')
# url_kwarg_names == ['thing_name', 'feature_name']
Run Code Online (Sandbox Code Playgroud)

url_kwarg_names现在是我需要提供给Django reverse函数的每个关键字的列表,以便反转命名的url "thing_feature".

任何帮助表示赞赏!

根据knbk的回答,我能够提出以下解决方案:

def get_kwarg_names_for_url(url_name):
    resolver = get_resolver(get_urlconf())
    reverse_data = resolver.reverse_dict[url_name]

    pattern_list = reverse_data[0]

    '''
    Need …
Run Code Online (Sandbox Code Playgroud)

python django django-urls

8
推荐指数
1
解决办法
1011
查看次数

Django 2 url路径匹配负值

在Django <2中,正常的方法是使用正则表达式.但现在建议在Django => 2中使用path()而不是url()

path('account/<int:code>/', views.account_code, name='account-code')
Run Code Online (Sandbox Code Playgroud)

这看起来还不错,并且可以很好地匹配url模式

/account/23/
/account/3000/
Run Code Online (Sandbox Code Playgroud)

但是,这个问题是我也希望这个匹配负整数

/account/-23/
Run Code Online (Sandbox Code Playgroud)

请问如何使用path()执行此操作?

python django django-urls

8
推荐指数
1
解决办法
947
查看次数

如何在 Django 的一个 url 地址中调用多个视图?

我正在尝试在 index.html 上显示由 new_measurement 定义的表单,但我只能设法开始IndexView()工作。我尝试了IndexView()和之间的各种组合new_measurement(),但这些都没有奏效。我知道这IndexView()不会传递任何与 相关的东西new_measurement()new_measurement()也不会被调用,这是我问题的核心。如果有对 Django 更有经验的人能告诉我我能做什么或应该做什么,我将不胜感激。谢谢你。

这是我的views.py

from django.shortcuts import render
from django.utils import timezone
from .models import Measurement
from .forms import MeasurementForm
from django.views import generic


class IndexView(generic.ListView):
    model = Measurement
    context_object_name = 'measurement_list'
    template_name = 'index.html'
    queryset = Measurement.objects.all()


def new_measurement(request):
    if request.method == "POST":
        form = MeasurementForm(request.POST)
        if form.is_valid():
            measurement = form.save(commit=False)
            measurement.measurement_date = timezone.now()
            measurement.save()
    else:
        form = MeasurementForm()

    return …
Run Code Online (Sandbox Code Playgroud)

python django django-urls django-views

7
推荐指数
1
解决办法
2万
查看次数