我想实现以下目标:
Run Code Online (Sandbox Code Playgroud)/webapp-context/Page-1 -> Handled by my custom "ContentServlet" /webapp-context/Another-Page -> Handled by my custom "ContentServlet" /webapp-context/Page-with-long-title -> Handled by my custom "ContentServlet" /webapp-context/_cms/<something>.zul -> Handled by ZK framework
我的最新尝试看起来像这样(web.xml提取):
Run Code Online (Sandbox Code Playgroud)<servlet-mapping> <servlet-name>zkLoader</servlet-name> <url-pattern>*.zul</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>myContentServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
不幸的是现在我的内容servlet处理所有请求(我认为更具体的模式优先?).
如果我将我的内容servlet映射到模式"/ webapp-context/content/*",则不存在冲突,但这不是我想要的.
谢谢你的时间.
这是一个快速的问题,但我找不到快速的答案.现在我有一个servlet BaseServlet,当用户请求下面的任何url时:
host
host/
host/BaseServlet
Run Code Online (Sandbox Code Playgroud)
它应始终引用相同的servlet并重定向到主页.
当我设置
@WebServlet({"/BaseServlet", ""})
Run Code Online (Sandbox Code Playgroud)
只要
host/
host/BaseServlet
Run Code Online (Sandbox Code Playgroud)
作品
如果我订
@WebServlet({"/BaseServlet", "", "/"})
Run Code Online (Sandbox Code Playgroud)
BaseServlet将被循环请求...
为什么?
编辑:BaseServlet转发到WEB-INF文件夹中的index.html hid,就是这样.
getServletContext().getRequestDispatcher("/WEB-INF/index.html").forward(request,response);
Run Code Online (Sandbox Code Playgroud)
servlet规范说"只包含/字符的字符串表示应用程序的"默认"servlet." 所以我希望BaseServlet成为我的默认设置.为什么它不起作用?
我想指定一个Servlet URL模式来匹配以斜杠("/")结尾的URL,而只是斜杠.
我理解这种模式
/example/path/*
将匹配的URL
http://example.com/example/path/
这似乎有效.但是,相同的模式也会匹配的URL
http://example.com/example/path/a/
http://example.com/example/path/b/
http://example.com/example/path/c/
我只是在寻找一个http://example.com/example/path/只匹配而不匹配的URL模式http://example.com/example/path/a/等等.
澄清:不允许以斜杠结尾的URL模式.
我开始在Django 1.4中使用新的i18n_patterns.基本上,我希望在我的所有模板标题上为每种支持的语言提供语言链接.我已将我的标题实现为一个单独的模板,该模板包含在其他模板中.
有没有办法保持我的标题通用并解决这个问题,而不传递模板上下文中的当前视图名称或当前网址?我想这是一个问题,我如何以通用方式从模板内部检索当前视图或网址.
顺便说一句,我发现我之前用set_lang视图改变活动语言的方法将使用url_patterns打破,因为在更改语言后,它会在重定向到引用视图时将其更改回来.
任何帮助找出在模板中设置语言链接的通用方法,以通用的方式与url_patterns一起使用将不胜感激!
django localization internationalization url-pattern django-1.4
有一个@WebServlet(urlPatterns = "/myServlet/").如果用户去myapp/myServlet/other,我仍然希望我的servlet能够捕获.所以说,在servlet路径之后的通配符.我怎么能这样做?
如何将过滤器映射到URL的根目录?我正在使用Tomcat 7.0.2并将应用程序部署为ROOT.war.欢迎页面是sign_in.xhtml.每当客户端发送对站点根目录的请求(即仅域名),或者客户端请求sign_in.xhtml时,我想运行过滤器.这是我到目前为止:
<filter>
<filter-name>My filter</filter-name>
<filter-class>com.myApp.myFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>My filter</filter-name>
<url-pattern>/sign_in.xhtml</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
直接请求sign_in.xhtml,成功调用过滤器,但我不知道如何获取root用户调用过滤器的请求.根据Servlet规范(3.0版)
<url-pattern>/</url-pattern>
Run Code Online (Sandbox Code Playgroud)
映射到默认servlet,空字符串映射到根.以下是规范中的相关部分:
"空字符串("")是一个特殊的URL模式,它完全映射到应用程序的上下文根,即http:// host:port //形式的请求.在这种情况下,路径信息是'/'和servlet路径和上下文路径是空字符串("")."
但是,以下两个url模式都会导致Tomcat抛出异常.
<url-pattern></url-pattern>
<url-pattern>""</url-pattern>
Run Code Online (Sandbox Code Playgroud)
如果有人能够对此有所了解,我将非常感激.谢谢.
安德鲁
我在django中有一个可以接受许多不同过滤器参数的视图,但它们都是可选的.如果我有6个可选的过滤器,我是否真的必须为6的每个组合编写URL或者有没有办法定义url的哪些部分是可选的?
为了给你一个只有2个过滤器的例子,我可以拥有所有这些url的可能性:
/<city>/<state>/
/<city>/<state>/radius/<miles>/
/<city>/<state>/company/<company-name>/
/<city>/<state>/radius/<miles>/company/<company-name>/
/<city>/<state>/company/<company-name>/radius/<miles>/
Run Code Online (Sandbox Code Playgroud)
所有这些网址都指向相同的视图,唯一需要的参数是城市和州.使用6个过滤器,这变得难以管理.
做我想做的最好的方法是什么?
我试图映射一个匹配两者的servlet模式
/server/abcDef/1432124/adfadfasdfa
Run Code Online (Sandbox Code Playgroud)
和
/server/abcDef/abcd/12345
Run Code Online (Sandbox Code Playgroud)
值'1432124'和'abcd'不是固定的,可以是多个值.所以基本上我需要匹配/abcDef/*/*- 只有abcDef是固定的.
有没有办法让我映射这个?我真的在寻找以下内容:
<servlet-mapping>
<servlet-name>abcDefServlet</servlet-name>
<url-pattern>/server/abcDef/*/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud) 这个问题很简单,但我无法弄清楚
添加到我的urlpatterns
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/home/user/www/site/static'})
Run Code Online (Sandbox Code Playgroud)
我的main.css是:/home/user/www/site/static/css/main.css
当我访问http:// localhost:8000/static /
我得到:404:这里不允许目录索引.
当我访问http:// localhost:8000/static/css/main.css时
我得到:404:'css/main.css'找不到
我究竟做错了什么?
固定它:
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT } ),
Run Code Online (Sandbox Code Playgroud)
在settings.py中
# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = os.path.join(CURRENT_PATH, 'static') #=='/home/user/www/site/static'
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/mystatic/'
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我唯一真正改变的是从STATIC_URL ='/ static …
我正在尝试将表单 POST 数据发送到下一页,但出现错误
您通过 POST 调用了此 URL,但该 URL 不以斜杠结尾,并且您设置了 APPEND_SLASH。Django 在维护 POST 数据时无法重定向到斜杠 URL。将表单更改为指向 127.0.0.1:8000/robustSearch/(注意结尾的斜杠),或在 Django 设置中设置 APPEND_SLASH=False。
我的 urls.py 文件
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
path('search_titles', views.searchTitles, name='search_titles'),
path('stats/', views.dataStats, name='stats'),
path('robustSearch/', views.robustSearch, name='robustSearch'),
]
Run Code Online (Sandbox Code Playgroud)
和我的views.py 文件
def robustSearch(request):
if request.method == 'POST':
file = request.FILES['titles_file']
df = pd.read_csv(file)
df.dropna(inplace=True)
counting = df.counts()
context={
'counting': counting,
}
return render(request, 'result_titles.html', context)
Run Code Online (Sandbox Code Playgroud)
我的 POST 表单文件是
<form action="robustSearch" method="POST" enctype="multipart/form-data">
{% csrf_token …Run Code Online (Sandbox Code Playgroud) url-pattern ×10
servlets ×6
django ×4
java ×4
python ×3
web.xml ×3
django-1.4 ×1
form-post ×1
localization ×1
static ×1
urlconf ×1
web ×1
wildcard ×1
zk ×1