我试图将业务逻辑从控制器转移到他们自己的服务中.
public class AccountController : Controller
{
private readonly IAccountService _accountService;
public AccountController(IAccountService accountService)
{
_accountService = accountService;
}
....
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Unity注入依赖项.我想Url.GenerateUrl()在实现中使用helper方法IAccountService但是Url是针对控制器的属性.
我查看了MVC源代码,看看它是如何完成的,但它要求我RequestContext从控制器外部访问,我不知道该怎么做.
如何从控制器外部访问RequestContext?如果这不能解决我的问题,我如何解决我的设置问题?
我在urls.py中有这条路径:
archive_index_dict = {
'queryset': News.objects.filter(show=True),
'date_field': 'date',
'template_object_name': 'object_list',
}
...
url(r'^$', 'django.views.generic.date_based.archive_index',
archive_index_dict, name='news_archive_index'
),
Run Code Online (Sandbox Code Playgroud)
现在我想在模板中检测页面是否是最新的(这是用于菜单样式).既不 在模板中工作{{ request.path }}也不{{ request.get_full_path }}工作.
我应该用什么呢?
解
要获得request模板我不得不添加可django.core.context_processors.request到TEMPLATE_CONTEXT_PROCESSORS.默认情况下不设置此项(因为django 1.3).
django requestcontext django-generic-views class-based-views
我尝试构建一个非常简单的网站,可以将数据添加到sqlite3数据库中.我有一个带有两个文本输入的POST表单.
index.html的:
{% if top_list %}
<ul>
<b><pre>Name Total steps</pre></b>
{% for t in top_list %}
<pre>{{t.name}} {{t.total_steps}}</pre>
{% endfor %}
</ul>
{% else %}
<p>No data available.</p>
{% endif %}
<br>
<form action="/steps_count/" method="post">
{% csrf_token %}
Name: <input type="text" name="Name" /><br />
Steps: <input type="text" name="Steps" /><br />
<input type="submit" value="Add" />
</form>
Run Code Online (Sandbox Code Playgroud)
forms.py:
from django import forms
from steps_count.models import Top_List
class Top_List_Form(forms.ModelForm):
class Meta:
model=Top_List
Run Code Online (Sandbox Code Playgroud)
views.py:
# Create your views here.
from django.template import Context, loader …Run Code Online (Sandbox Code Playgroud) 该属性HttpContext.Current.Request.ApplicationPath表示IIS或WebDev.WebServer中的虚拟目录.
HttpContext.Current.Request.ApplicationPath evaluates to "/virtualdirectory"
Run Code Online (Sandbox Code Playgroud)
这可以与VirtualPathUtility路径根相关联使用:
VirtualPathUtility.ToAbsolute("~/images/cat.jpg",
HttpContext.Current.Request.ApplicationPath)
// (this evaluates to "/virtualdirectory/images/cat.jpg")
Run Code Online (Sandbox Code Playgroud)
在IIS6和WebDev.WebServer Request对象是可用global.asax.cs的,但IIS7抱怨说,它是"在目前情况下不可用".因此上面的第二行代码可以工作,但不能在IIS7中工作.
问题是我需要访问其中的虚拟directroy名称global.asax.cs.我需要它来构建一些在动态创建的CSS中使用的路径.有没有其他方法可以访问此值?
编辑:这是您在IIS 7中调用HttpContext.Current.RequestApplication_Start下的global.asax.cs时出现的错误:
HttpException (0x80004005): Request is not available in this context]
System.Web.HttpContext.get_Request() +8789264
Run Code Online (Sandbox Code Playgroud) 我可以发送回调参数,只要我只发送一些像String这样的原始类型,它就可以完美地工作.但即使是最简单的POJO也是如此.PrimeFaces指南说RequestContext.addCallbackParam()方法可以处理POJO并将它们转换为JSON.我不知道为什么它不适用于我的情况.
有人这样做过吗?
我想突出显示导航菜单中的当前页面.显然,当你在他们的页面上时,我需要给菜单链接一个类似'active'的类.这是一个经典问题,我已经看到了很多解决方案.我的问题是我讨厌他们所有人,并认为他们都不是很干.例如:
@register.simple_tag
def active(request, pattern):
import re
if re.search(pattern, request.path):
return 'active'
return ''
----
{% load tags %}
<div id="navigation">
<a class="{% active request "^/about/" %}" href="/about/">About</a>
<a class="{% active request "^/contact/" %}" href="/contact/">Contact</a>
<a class="{% active request "^/services/" %}" href="/services/">Services</a>
</div>
Run Code Online (Sandbox Code Playgroud)
标记会获取您当前的请求和网址表达式,如果您当前在此页面上,则会返回"有效".或者,这可以使用命名视图而不是URL来完成,但原理是相同的.
我的主要问题是我的导航将在99%的视图中被调用,然而,为了获取当前请求变量,我仍然使用以下内容解析RequestContext到模板:
def contact(request):
# snip ...
return render_to_response(
'contact.html',
{ 'myvar' : myvar },
context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
为什么我需要将这个context_instance行添加到我的每个视图中,除非其中一个人可能只需要一个请求变量,以便获取当前的URL /视图以突出显示活动链接?这看起来非常潮湿,特别是对于必须在大多数django网站中的功能.我希望默认情况下包含请求,并且可以选择禁止它.我找不到在中间件中执行此操作的方法,因为在视图返回后,我无法在模板呈现之前拦截模板.
有什么建议?
navigation django django-templates django-views requestcontext
我正在尝试将RequestFactory和Editor框架实现到我的应用程序中.我甚至在研究了论坛,谷歌开发者论坛以及其他人之后发现,有些基本的东西我不理解将RequestContext与RequestFactory一起使用.这是我的场景:
我有一个简单的实体,它有三个字段,id,version,描述名为CmsObjectType.我有一个对应的EntityProxy和一个CmsObjectTypeServiceDAO与我的CRUD操作.我还实现了ServiceLocator和ObjectLocator类.这段代码都编译并运行.
我还创建了一个简单的测试用例来测试CRUD操作,使用以下代码:
public class RequestFactoryProvider {
public static CmsRequestFactory get() {
SimpleEventBus eventBus = new SimpleEventBus();
CmsRequestFactory requestFactory = RequestFactoryMagic.create(CmsRequestFactory.class);
ServiceLayer serviceLayer = ServiceLayer.create();
SimpleRequestProcessor processor = new SimpleRequestProcessor(
serviceLayer);
requestFactory.initialize(eventBus, new InProcessRequestTransport(
processor));
return requestFactory;
}
Run Code Online (Sandbox Code Playgroud)
}
考试:
public class TestCmsObjectTypeRequest extends Assert {
private static CmsRequestFactory requestFactory;
private static CmsObjectTypeRequestContext objectTypeRequest;
private Long newId;
@Before
public void setUp() {
requestFactory = RequestFactoryProvider.get();
objectTypeRequest = requestFactory.objectTypeRequest();
}
@Test
public void testEdit() {
final CmsObjectTypeProxy newType = objectTypeRequest
.create(CmsObjectTypeProxy.class); …Run Code Online (Sandbox Code Playgroud) 说我有这个:
TimeEntryProxy timeEntry = someRequestContext.create(TimeEntryProxy.class);
Run Code Online (Sandbox Code Playgroud)
创建的代理为空.有没有办法用默认值设置它的一些字段?例如,此代理的timeAllocation是double.可以将其设置为0而不必执行此操作:
timeEntry.setTimeAllocation(0);
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在使用 primefaces 并且在 ajax 调用结束时执行 JavaScript 时遇到问题。我向 RequestContext 添加了一些动作,它被执行了两次!
RequestContext.getCurrentInstance().execute("alert('I'm here!')");
Run Code Online (Sandbox Code Playgroud)
它也在我从服务器返回的 XML 中嵌入了两次 - 两次相同的组件和相同的节点。
Primefaces 版本是 5.3.10
任何想法这里出了什么问题?谢谢。
我目前正在处理三个文件,分别是 index.js、index.main.js 和 app.js。我正在使用请求上下文从 index.main.js 中获取一个变量并将其传递给 index.js。
在 app.js(我在服务器文件夹中创建的文件)中,我有以下代码
//full code in app.js
const contextService = require("request-context");
const app = express();
app.use(contextService.middleware("request"));
Run Code Online (Sandbox Code Playgroud)
我试过运行以下命令
npm install --save typescript @types/node @types/react @types/react-dom @types/jest
npm install -D @types/request-context
Run Code Online (Sandbox Code Playgroud)
并在导入前尝试使用
// @ts-ignore
Run Code Online (Sandbox Code Playgroud)
无济于事。
当我检查我的 app.js 时,我注意到“require”这个词上有三个点,它显示:
找不到模块“请求上下文”的声明文件。'/home/servertest/Desktop/folder/folder1/src/component_NodeJS/server/node_modules/request-context/lib/index.js' 隐式具有 'any' 类型。尝试npm install @types/request-context它是否存在或添加一个包含declare module 'request-context';ts(7016)的新声明 (.d.ts) 文件
在 index.main.js 我有以下内容
async function listFilesInDepth()
{
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucketName = 'probizmy';
const [files] = await …Run Code Online (Sandbox Code Playgroud) requestcontext ×10
django ×3
gwt ×2
primefaces ×2
args ×1
asp.net ×1
asp.net-mvc ×1
callback ×1
csrf ×1
django-views ×1
javascript ×1
navigation ×1
node-modules ×1
node.js ×1
pojo ×1
python ×1
typescript ×1
urlhelper ×1