标签: django-urls

Django在url中解析特殊字符的问题

我们有一个由Django制作的网站.在本地工作环境中访问以下URL时没有问题:

http://site/tags/c%23/
Run Code Online (Sandbox Code Playgroud)

"c%23"是"c#"的urlencode,在本地工作正常.但是在我们将它部署到Bluehost托管服务器(apache + fastcgi)之后,此URL已经解析为一个新的地址,如下所示:

http://site/t/tags/c/ 
Run Code Online (Sandbox Code Playgroud)

这太奇怪了.可能这不是Django的问题,而是与Apache url的重写有关.如果您有任何想法或建议如何解决这个问题,请告诉我.提前致谢.

这是.htaccess文件可以考虑:

AddHandler fcgid-script .fcgi 
#AddHandler fastcgi-script .fcgi 
#AddHandler application/cgi .fcgi 
#AddHandler cgi-script .fcgi 
RewriteEngine On 
RewriteBase / 
#static file setting 
RewriteRule ^(media/.*)$ - [L] 
RewriteRule ^(static/.*)$ - [L] 
RewriteCond %{REQUEST_URI} !(dispatch.fcgi) 
RewriteRule ^(.*)$ dispatch.fcgi/$1 [L] 
Run Code Online (Sandbox Code Playgroud)

和dispatch.fcgi文件:

#!/home/***/python/bin/python 
import sys, os 
# Add a custom Python path. 
sys.path.insert(0, "/home/***/python") 
sys.path.insert(0, "/home/***/working/Django-1.0") 
os.chdir("/home/***/working/Django-1.0/project") 
os.environ['DJANGO_SETTINGS_MODULE'] = "project.settings" 
from django.core.servers.fastcgi import runfastcgi 
runfastcgi(["method=threaded", "daemonize=false"]) 
Run Code Online (Sandbox Code Playgroud)

UPDAET:如果这是由httpd.conf中的设置引起的,如何在我没有权限的情况下覆盖.htaccess文件?

django django-urls

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

Django:有没有更好的方法来加粗当前页面链接

我有一个base.html模板,其中包含一个链接列表.

例:

   <div id="sidebar1">
        <ul>
        <li><a href="/" title="">Index</a></li>
        <li><a href="/stuff/" title="" class="current">Stuff</a></li>
        <li><a href="/about/" title="">About Me</a></li>
        <li><a href="/contact/" title="">Contact Me</a></li>
    </div>
Run Code Online (Sandbox Code Playgroud)

然后我在views.py中为index.html,stuff.html,about.html和contact.html提供了每个定义.这些模板中的每一个都只是从base.html模板派生而来,并设置各自的标题和内容.

我的问题是关于上面/我有一个类="当前"的东西.

我想让我所在的当前页面具有该类属性.

我可以在每个视图中设置一个不同的变量,如current_page ="about",然后在模板中与{% ifequal %}每个链接的每个类元素进行比较,但这似乎是重复工作(因为额外的视图变量).

有没有更好的办法?也许如果有一种方法来获取模板自动填充的视图函数名称,我不需要设置额外的变量?它似乎也有很多ifequals.

django django-templates django-urls

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

覆盖特定模型的Django管理员URL?

首先是一点背景:

我有一个Event有各种各样event_type的模型.我想打破其中一个事件类型,'电影',进入它自己的管理员.我有基本的功能:一个代理模型继承自Event命名Film,该代理模型的自定义管理器,它只将其过滤为"电影"事件类型,它是自己的ModelAdmin.

问题是相反的.我现在需要从主Event管理员中过滤掉电影.我不想改变Event模型或其默认管理器,因为影响太大了.因此,我尝试创建另一个代理模型,EventAdminProxy其唯一目的是在管理员中提供过滤的事件列表.然后,我Event使用现有的ModelAdmin 注册此模型,而不是.

这显然有效,但它有改变管理员URL的不幸副作用.而不是更改列表位于"/ admin/event/event /",它现在位于"/ admin/event/eventadminproxy /".

我要做的是保持这个设置,但也保留旧的URL.我试过重载ModelAdmin的get_urls方法,但从我所知道的,你无法控制那里的完整URL,只有"/ app_label/model_class /"之后的内容.

我想在主urls.py中覆盖它,但无法找出可接受的视图.实际视图仅在实例化的ModelAdmin对象上可用,而不是类本身.

有关如何覆盖管理员中使用的URL的任何想法?

django url django-urls django-admin

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

如何定义在django中接受每一个字符串的url

在django中,我定义了这样的url

(r'^checkstring/(?P<string>\w+)/$',views.check_str,name='check str')
Run Code Online (Sandbox Code Playgroud)

但是,当我输入字符串输入,如ibrahim.yilmaz,ibrahi!m或ibrahim@ibrahim.com时,它返回http 404.那么我怎么能写出接受每一个字符串的url?

任何帮助将不胜感激.

易卜拉欣

python django django-urls

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

django admin上的新URL独立于应用程序

我正在使用django 1.4和Python 2.7.

我只是有一个简单的要求,我必须在django管理应用程序中添加一个新的URL.我知道如何添加适用于自定义应用的网址,但我无法弄清楚如何添加属于管理员应用的网址.请指导我完成这个.

基本上,完整的URL应该是这样的admin/my_url.

UPDATE

我想要一种方法,然后我可以使用admin反向映射URL.

django django-urls django-admin python-2.7 django-1.4

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

Django:ImportError,没有名为urls的模块

我的urls.py项目目录中有以下文件:

from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('wb.views',
    url(r'^areas/$', 'arealist'),
    url(r'^areas/(?P<area_id>\d+)/$', 'area_roomlist'),
    url(r'^areas/(?P<area_id>\d+)/rooms/(?P<room_id>\d+)/$', 'area_roomdetail'),
    url(r'^areas/add_area/$','add_area'),
    url(r'^areas/area_added/$', 'area_added'),
    url(r'^rooms/$', 'roomlist'),
    url(r'^rooms/(?P<room_id>\d+)/$', 'roomdetail'),
    url(r'^rooms/add_room/$', 'add_room'),
    url(r'^rooms/room_added/$', 'room_added'),
    url(r'^room_exits/$', 'room_exit_list'),
    url(r'^room_exits/add_room_exit/$', 'add_room_exit'),
    url(r'^room_exits/room_exit_added/$', 'room_exit_added'),
)

urlpatterns += patterns('',
    url(r'^admin/', include(admin.site.urls)),
)
Run Code Online (Sandbox Code Playgroud)

每当我尝试加载页面时,都会出现以下错误:

ImportError at /page/, No module named urls
Run Code Online (Sandbox Code Playgroud)

有谁知道发生了什么?提前致谢.

python django django-urls

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

在URL中显示slug和ID,但仅在Django中按ID进行路由

我想要实现的是:我的新闻应用程序应该显示一个slug,但只能通过ID以/ news/24/this-is-the-slug的形式查询文章

不幸的是,我NoReverseMatch: Reverse for 'news_detail' with arguments '('',)' and keyword arguments '{}' not found.在尝试浏览文章时遇到了问题.如上所述,模板中生成的URL看起来是正确的(我可以通过Haystack进行搜索来确认这一点,Haystack提供正确的URL).

models.py

class News(models.Model):
    id = models.IntegerField(primary_key=True, editable=False)
    category = models.CharField(max_length=50L)
    title = models.CharField(max_length=200L)
    rss_summary = models.TextField(max_length=2000L)
    body_text = models.TextField(max_length=5000L)
    post_date = models.DateTimeField()
    prettyurl = models.SlugField(max_length=100L)

    class Meta:
        db_table = 'news'

    def __unicode__(self):
        return self.title

    def get_absolute_url(self):
        return urlresolvers.reverse('news_detail', kwargs={'pk': self.id, 'slug': self.prettyurl })
Run Code Online (Sandbox Code Playgroud)

urls.py

urlpatterns = patterns(
    '',
    url(
        r'^$',
        view=views.NewsListView.as_view(),
        name='news_index'),
    url(
        r'^(?P<pk>\d+)/',
        view=views.NewsDetailView.as_view(),
        name='news_detail'),
    url(
        r'^(?P<pk>\d+)/(?P<slug>[-\w]+)/$',
        view=views.NewsDetailView.as_view(),
        name='news_detail'),
    url( …
Run Code Online (Sandbox Code Playgroud)

django django-urls slug pretty-urls django-1.5

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

具有多个URL模式和可选参数的相同视图

我正在尝试设计URLconf文件,其中一个视图接受两个可选参数:dateaccount_uuid.

views.py:

@login_required
def dashboard(request, date=None, account_uuid=None):
    # some unrelated code...
Run Code Online (Sandbox Code Playgroud)

urls.py:

urlpatterns = patterns(
    'app.views',
    url(r'^dashboard$',
        'dashboard',
        name='dashboard'),
    #WHAT HERE??
)
Run Code Online (Sandbox Code Playgroud)

用户可以访问包含一个或两个参数的url.

没有参数:

http://example.com/dashboard

使用日期(ddmmyyy格式)只应该看起来像:

http://example.com/dashboard/01042015

仅限帐户UUID:

http://example.com/dashboard/e1c0b81e-2332-4e5d-bc0a-895bd0dbd658

日期和帐户均为uuid:

http://example.com/dashboard/01042015/e1c0b81e-2332-4e5d-bc0a-895bd0dbd658

我该如何设计我的URLconf?它应该易于阅读和快速.

谢谢!

python django django-urls

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

include()得到一个意外的关键字参数'app_name'

我正在使用django-2.0为我的网站制作一个博客应用程序,当我运行服务器时,我看到以下错误

File "C:\Users\User\Desktop\djite\djite\djite\urls.py", line 7, in <module>
url(r'^blog/', include('blog.urls', namespace='blog', app_name='blog')),
TypeError: include() got an unexpected keyword argument 'app_name'
Run Code Online (Sandbox Code Playgroud)

这是我的主要urls.py

from django.contrib import admin
from django.conf.urls import url,include

urlpatterns = [
    url(r'^admin/', admin.site.urls),

    url(r'^blog/', include('blog.urls', namespace='blog', app_name='blog')),
]
Run Code Online (Sandbox Code Playgroud)

这是我的博客/ urls.py

from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>d{2})/(?P<post>
    [-/w]+)/$', views.post_detail, name='post_detail'),
    ]
Run Code Online (Sandbox Code Playgroud)

我的views.py:

from django.shortcuts import render, HttpResponse, get_object_or_404
from blog.models import Post
def post_list(request): #list
posts=Post.published.all()
return render(request, 'blog/post/list.html', {'posts': posts})

def …
Run Code Online (Sandbox Code Playgroud)

django django-models django-urls django-views django-2.0

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

从AJAX请求调用django视图(解析celery task_id)

我正在尝试将芹菜任务中的数据输出到一个单独的窗口中.我是一个新手JavaScriptAJAX,而这正是我目前的问题所在.执行视图后,将启动celery任务并success.html呈现下一个html页面():

success.html

{% block content %}
  <body>
    {% if task_id %}
      <h1>task_id has been called: {{ task_id }}</h1>

    <script src="{% static 'MyAPP/bootstrap/js/task_output_retrieval.js' %}"></script>
    <script type='text/javascript'> task_state("{{ task_id }}"); </script>

    <script src="{% static 'MyAPP/bootstrap/js/update-hello-user.js' %}"></script>
    <script type='text/javascript'> second(); </script>

      <h1> END </h1>

    {% endif %}
  </body>
{% endblock content %}
Run Code Online (Sandbox Code Playgroud)

我知道这JavaScript是被调用的,因为窗口至少是打开的.这是.js:

task_output_retrieval.js

function task_state (task_id) {
    var taskID = task_id; 
    var newWin = window.open('', 'new window', 'width=200, height=100');

    $.ajax({
            url: '{% …
Run Code Online (Sandbox Code Playgroud)

javascript django ajax django-urls celery

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