我们有一个由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文件?
我有一个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.
首先是一点背景:
我有一个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
(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?
任何帮助将不胜感激.
易卜拉欣
我正在使用django 1.4和Python 2.7.
我只是有一个简单的要求,我必须在django管理应用程序中添加一个新的URL.我知道如何添加适用于自定义应用的网址,但我无法弄清楚如何添加属于管理员应用的网址.请指导我完成这个.
基本上,完整的URL应该是这样的admin/my_url.
UPDATE
我想要一种方法,然后我可以使用admin反向映射URL.
我的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)
有谁知道发生了什么?提前致谢.
我想要实现的是:我的新闻应用程序应该显示一个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) 我正在尝试设计URLconf文件,其中一个视图接受两个可选参数:date和account_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.
没有参数:
使用日期(ddmmyyy格式)只应该看起来像:
仅限帐户UUID:
http://example.com/dashboard/e1c0b81e-2332-4e5d-bc0a-895bd0dbd658
日期和帐户均为uuid:
http://example.com/dashboard/01042015/e1c0b81e-2332-4e5d-bc0a-895bd0dbd658
我该如何设计我的URLconf?它应该易于阅读和快速.
谢谢!
我正在使用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) 我正在尝试将芹菜任务中的数据输出到一个单独的窗口中.我是一个新手JavaScript和AJAX,而这正是我目前的问题所在.执行视图后,将启动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) django ×10
django-urls ×10
python ×3
django-admin ×2
ajax ×1
celery ×1
django-1.4 ×1
django-1.5 ×1
django-2.0 ×1
django-views ×1
javascript ×1
pretty-urls ×1
python-2.7 ×1
slug ×1
url ×1